6

在一个 html 页面中,我有:

<ul class="phones">
              <li ng-repeat="phone in phones | filter:query | orderBy: orderProp">
                {{phone.name}} - {{phone.age}}
                <p>{{phone.snippet}}</p>
              </li>
            </ul>

在我的 e2e 测试中(返回数组中的两个元素):

            var result= ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name'));

            result.then(function(arr) {
                arr[0].getText().then(function(text) {
                    console.log("*** 1: "+ text);
                });

                arr[1].getText().then(function(text) {
                    console.log("*** 2: "+ text);
                })
            });

控制台正在打印所有三列,phone.name、phone.age 和 phone.snippet。为什么选择器不只是返回phone.name?

它实际上返回列表“li”中的任何内容,纯文本或绑定。

4

1 回答 1

3

该示例尝试使用以下策略定位元素(列部分根据评论固定):

protractor.By.repeater('phone in phones').column('name')

中继器部分匹配li元素,然后去查找具有phone.name绑定的元素。它的包装元素恰好是相同的li

将列部分更改为.column('snippet')返回p元素,因为phone.snippet在这些元素中找到了绑定。

此处的相关文档/示例:https ://github.com/angular/protractor/blob/master/docs/getting-started.md#writing-tests

于 2013-11-14T21:26:01.627 回答