在使用量角器的e2e测试中,我从文件中获取数据并检查UI中是否存在该数据。如果存在,则单击它。
页面中大约有10章,我的文件有2章(表示为chapterName)。我想检查我的文件中的chapterNames是否在UI中,如果是,则逐个点击。我是使用下面的代码,但不知道如何进行循环
如何在量角器中做到这一点?
element.all(by.repeater('chapter in chapters')).filter(function (ele,index) {
return ele.getText().then(function(text){
return text === chapterName;
});
}).click();
答案 0 :(得分:0)
您需要使用闭包函数来实现promise中的循环。请看下面的示例代码。
function clickChapterByName(){
var chapterNames= ['chapter-1','chapter-2','chapter-3','chapter-4','chapter-5']
for(i=0;i<chapterNames.length;i++){
function closure(chapterName) {
element.all(by.repeater('chapter in chapters')).filter(function (ele,index) {
return ele.getText().then(function(text){
return text === chapterName;
});
}).click();
}
closure(chapterNames[i])
}
}
答案 1 :(得分:0)
不太确定我是对的,但我认为你几乎就在那里:
element.all(by.repeater('chapter in chapters')).filter(element=> {
return ele.getText().then(text=> text === chapterName);
});
}).map(element=> element.click());
.filter的结果只是匹配条件的元素,因此您将获得新的ArrayElementFinder,并且可以使用.map()
进行迭代。答案 2 :(得分:0)
根据您的要求,您需要进行循环操作。因此,您可以通过量角器api中提供的each()方法实现此目的。
代码段:
element.all(by.repeater('chapter in chapters')).
each(function (ele, index) {//for looping purpose
ele.getText().then(function(text){
if(text == inputChapterName){
ele.click();//click chapter is
}
});
})