无法在量角器打字稿代码中跳出循环
Not able to come out of loop in protractor typscript code
我是量角器和打字稿的新手,正在编写使用它们编写的自动化测试代码。
我创建了一个方法
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;
}
}
}
所以不知道如何 return 或退出 for 循环。我也用谷歌搜索,有人建议使用 try-catch 块并在日期匹配时抛出异常。那是唯一的解决办法吗?如果有人可以使用 promise 提供解决方案,将不胜感激:)
如果需要更多信息,请告诉我。
如果一切都是同步的,请尝试以下量角器方法链:
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();
}
我是量角器和打字稿的新手,正在编写使用它们编写的自动化测试代码。
我创建了一个方法
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;
}
}
}
所以不知道如何 return 或退出 for 循环。我也用谷歌搜索,有人建议使用 try-catch 块并在日期匹配时抛出异常。那是唯一的解决办法吗?如果有人可以使用 promise 提供解决方案,将不胜感激:)
如果需要更多信息,请告诉我。
如果一切都是同步的,请尝试以下量角器方法链:
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();
}