当我开始第一个if条件工作良好,但当$initialVal.text()更改为失败或完成时,我的脚本进入无限循环。
使用以下代码:
let maxCount = 1000;
for(let i = 0; i< maxCount; i++){
cy.get('locator').each(($initialVal, index, list) => {
expect(index).to.be.greaterThan(-1);
if ($initialVal.text() == 'started')
cy.get("locator").type({'enter'});
else if ($initialVal.text() == 'failed')
cy.log("Status is " + $initialVal.text());
**//here I need to break the loop**
else {
cy.log("Status is " + $initialVal.text());
}
}
我期待一个解决方案,如果状态是启动,它应该执行的行动,如果它失败或其他东西,它应该执行不同的行动,然后打破循环。
由于异步执行,您无法停止Cypress命令中的for
循环。但是您可以跳过迭代:
let stop = false;
let maxCount = 1000;
for (let i = 0; i < maxCount; i++) {
cy.then(() => {
if (!stop) {
cy.get('locator').each(($initialVal, index, list) => {
expect(index).to.be.greaterThan(-1);
if ($initialVal.text() == 'started')
cy.get('locator').type({ 'enter' });
else if ($initialVal.text() == 'failed') {
cy.log('Status is ' + $initialVal.text());
stop = true;
} else cy.log('Status is ' + $initialVal.text());
});
}
})
}