量角器无法点击转发器行

时间:2014-03-07 10:07:32

标签: angularjs selenium-webdriver protractor

在使用量角器测试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光标会转到网页中的过滤器,但会尝试单击过滤器,但点击不起作用,因此不会应用过滤器。

2 个答案:

答案 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'将包含所有行作为数组。