在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”,纯文本或绑定中的任何内容。
答案 0 :(得分:3)
该示例尝试使用以下策略定位元素(列部分根据注释固定):
protractor.By.repeater('phone in phones').column('name')
Repeater部分匹配li
元素,然后查找具有phone.name
绑定的元素。它的包装元素恰好是li
。
将列部分更改为.column('snippet')
会返回p
个元素,因为在phone.snippet
内部找到{{1}}个绑定。
此处的相关文档/示例:https://github.com/angular/protractor/blob/master/docs/getting-started.md#writing-tests