所以这个问题基本上是为了详细阐述[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。但是,我很困惑它返回了我们想要找到的元素的位置,以便对它执行单击操作?
答案 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()
点击它。