如何在cypress中使用while循环?运行此规范文件时的控件未进入循环?我轮询任务的方式是否正确?
我为异步POST调用轮询任务的方式正确吗???因为程序控制不在等级库文件中输入“while”循环。请帮忙! 上次查询:如何在cypress中使用while循环?运行此规范文件时的控件未进入循环?我轮询任务的方式是否正确?,cypress,Cypress,我为异步POST调用轮询任务的方式正确吗???因为程序控制不在等级库文件中输入“while”循环。请帮忙! 上次查询: while循环对我不起作用,所以作为一种解决方法,我做了一个for循环,一种超时重试的while循环 let found = false const timeout = 10000 for(let i = 0; i<timeout && !found;i++){ if(..){ // exiting from the lo
while循环对我不起作用,所以作为一种解决方法,我做了一个for循环,一种超时重试的while循环
let found = false
const timeout = 10000
for(let i = 0; i<timeout && !found;i++){
if(..){
// exiting from the loop
found = true
}
}
let found=false
常数超时=10000
for(设i=0;i由于cypress的异步性质,您不能在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();
}
} );
}
然后在测试中调用this.clickVisibleButton()
。我使用的是typescript,这个方法是在一个类中设置的,但是你也可以作为一个常规函数来执行。你绝对可以在Cypress中为循环使用。而命令实际上是队列,因此在这方面它比Javascript更同步。
clickVisibleButton = () => {
cy.get( 'body' ).then( $mainContainer => {
const isVisible = $mainContainer.find( '#idOfElement' ).is( ':visible' );
if ( isVisible ) {
cy.get( '#idOfElement' ).click();
this.clickVisibleButton();
}
} );
}