如何在量角器中找到特定的行

时间:2018-03-28 07:44:35

标签: angularjs selenium protractor automated-tests

所以这个问题基本上是为了详细阐述[How to find specific row in ng-table by text [protractor]提到的解决方案的工作原理。

我正在复制代码段

element.all(by.repeater('item in $data track by    $index')).filter(function(row) {
    return row.getText().then(function(txt) {
        txt = txt.replace(/\s/g, '');
        var found = txt.split('ID0001');
        return found.length > 1;
    });
}).then(function( elem){
   elem[0].click();
});

在这里,我无法了解如何在then子句中专门选择ID0001。我得到了使用split函数的部分,因为当没有找到任何东西时,它将简单地返回1并且如果发现长度将大于并因此将返回true。但是,我很困惑它返回了我们想要找到的元素的位置,以便对它执行单击操作?

2 个答案:

答案 0 :(得分:0)

element.all().filter()用于从element.all()返回的元素列表中找出满足您要求的元素。

filter()的结果是一个新列表,其中可能包含element.all()的所有/部分元素。

filter()需要一个函数作为参数。并且要求函数应该返回一个布尔值/ promise。当boolean/<promise<boolean>等于True时,迭代元素将被添加到返回的新列表中。

实际上,element.all().filter()Array.filter类似,您可以从here了解它,以帮助您了解前者。

答案 1 :(得分:0)

如果.split('ID0001')成功,则字符串将分为至少两部分,found.length > 1将为true。如果返回true,则表示您拥有所需的元素,因此.then()点击它。