在我的页面中有2 ng-repeat,'widget in Widgets','widget in widgetsOnPage'。当我尝试通过element.all(by.repeater('widget in widgets'));
找到元素时,它会从两个重复中找到元素。
我也尝试在量角器示例测试("\node_modules\protractor\example\example_spec.js")
上将'todo in todos'转发器更改为:
todoList = element.all(by.repeater('to'));
测试通过。
感谢。
答案 0 :(得分:2)
by.repeater
定位符基于findRepeaterElement()
函数。根据它的implementation,它正在ng-repeat
属性值中搜索传递的转发器子字符串,请参阅循环中的indexOf
调用:
for (var i = 0; i < repeatElems.length; ++i) {
if (repeatElems[i].getAttribute(attr).indexOf(repeater) != -1) {
rows.push(repeatElems[i]);
}
}
由于widget in widgets
是widget in widgetsOnPage
的子字符串,因此匹配。
由于行为有点令人惊讶,我会向protractor github issue tracker提交一个问题。
答案 1 :(得分:1)
您可以随时尝试使用css选择器,其中可能包含额外的文本:
$$('[ng-repeat="widget in widgets"]');
$$('[ng-repeat="widget in widgetsOnPage"]');
这会将输出限制为您想要的输出。
答案 2 :(得分:0)
在这种情况下,我可能只是制作自己的定位器!见protractor's documentation