在使用量角器测试Angular JS应用程序时,我遇到了一种奇怪的行为。 考虑到这个HTML结构,我想点击内部div,它是一个过滤器。
<div ng-hide="term.selected" ng-click="selectFilter('target',term.value)" class="listItem">
<div>
<label class="ng-binding">ZECPFICO00</label>
<span class="listItemNum ng-binding">157</span>
</div>
</div>
这是我的定位器:
element(by.repeater('term in facets.target | filter:ecSearchText').row(1)).click ();
执行此代码时,我的webdriver光标会转到网页中的过滤器,但会尝试单击过滤器,但点击不起作用,因此不会应用过滤器。
答案 0 :(得分:4)
1 - 在使用by.repeater时,您不需要指定过滤器,它是可选的
2 - Sirk几乎就在那里,你需要继续链接你的承诺,在点击一个div的例子下,你可以在这里使用任何方法..
var elements = element.all(by.repeater('term in facets.target'));
elements.first().then(function (term) {
term.findElement(by.css('div')).then(function (div) {
div.click();
});
});
3-您也可以这样做:
element.all(by.repeater('term in facets.target')).get(0).click();
答案 1 :(得分:0)
嗯,我从来没有见过或使用过定位器的地方.row(1),但我是一个菜鸟,所以这可能是我自己的无知,但是你可以尝试类似下面的东西:
element(by.repeater('term in facets.target | filter:ecSearchText')).then(function(rows){
rows[0].click();
});
那应该点击转发器的第一行。 'rows'将包含所有行作为数组。