Mar*_*scu 6 javascript ui-automation cypress
我有一个问题,我想单击一个按钮直到它消失,但次数可能会有所不同,所以我想检查可见性状态,当可见= true时单击按钮,当可见= false时结束测试,但问题是我不知道如何循环从获取元素到末尾的所有链。单击按钮一次,由于中断而停止;如果我删除中断,它甚至不会单击它会永远循环,主要问题是第一次通过链时,值是 true 但它不会重复
cy.get('[idElem]')
.then($isVisible => {
return $isVisible.is(':visible');
})
.then(value => {
while (value === true) {
cy.get('[idElem]').click();
break;
}
});
Run Code Online (Sandbox Code Playgroud)
由于 cypress 的异步性质,您不能将 while/for 循环与 cypress 一起使用。Cypress 不会等待循环中的所有内容完成才再次开始循环。但是,您可以改为执行递归函数,并等待一切完成后再再次调用方法/函数。
所以你可以做这样的事情,它会起作用:
clickVisibleButton = () => {
cy.get( 'body' ).then( $mainContainer => {
const isVisible = $mainContainer.find( '#idOfElement' ).is( ':visible' );
if ( isVisible ) {
cy.get( '#idOfElement' ).click();
this.clickVisibleButton();
}
} );
}
Run Code Online (Sandbox Code Playgroud)
然后显然在你的测试中调用了this.clickVisibleButton()。我正在使用打字稿,并且此方法是在类中设置的,但您也可以将其作为常规函数来执行。
| 归档时间: |
|
| 查看次数: |
2706 次 |
| 最近记录: |