Typescript 无法在量角器脚本代码中退出循环
我不熟悉量角器和打字脚本,正在使用它们编写自动化测试代码 我创建了一个方法作为Typescript 无法在量角器脚本代码中退出循环,typescript,for-loop,promise,protractor,ui-automation,Typescript,For Loop,Promise,Protractor,Ui Automation,我不熟悉量角器和打字脚本,正在使用它们编写自动化测试代码 我创建了一个方法作为 private allElements = $$('.some-list li'); public async getDateElement(calDate: string) { this.allElements.each(async function(element, index){ let eDate = await element.$('p').getText(); if
private allElements = $$('.some-list li');
public async getDateElement(calDate: string) {
this.allElements.each(async function(element, index){
let eDate = await element.$('p').getText();
if( eDate === calDate){
// I tried both these options
return eDate // getting undefined value here
return element.$('p').click(); // element get clicked but not coming out of loop
}
});
}
我用for循环尝试了另一种方法,但break关键字在这里不起作用
public async getDateElement(calDate: string) {
for (let element of await this.allElements) {
let eDate = await element.$('p').getText();
if (eDate === calDate) {
element.$('p').click();
break;
}
}
}
所以不知道,如何返回或退出for循环。我也在谷歌上搜索过,有人建议使用try-catch块,并在日期匹配时抛出异常。这是唯一的解决办法吗?如果有人能够使用承诺提供解决方案,我们将不胜感激:)
如果需要更多信息,请告诉我。如果一切都是同步的,请尝试以下量角器方法链:
public getDateElement(calDate: string) {
return this.allElements
.map(element => element.$('p'))
.filter(p => p.getText() === calDate)
.click();
}
或者,如果.getText()
是异步的,则类似于此,但可能与上面的.map()
阶段(异步版本)配合使用:
public async geDateElement(calDate: string) {
return this.allElements
.filter(async element => await element.getText() === calDate)
.click();
}
您可以尝试向
元素添加等待。$('p')。click()命令吗?
此.allegements
是一个iterable,而不是承诺,那么您为什么要等待它?想知道循环是否是正确的做法。看起来你可以过滤这个。等位基因创建一个包含感兴趣元素的集合,然后调用元素。$('p')。单击()
@SankalanParajuli尝试过,但没有任何区别。你真是太棒了@Roamer-1888。它与过滤器一起工作,它只是一行代码。谢谢请将此添加到答案中,以便我可以接受。