Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在cypress中使用while循环?运行此规范文件时的控件未进入循环?我轮询任务的方式是否正确?_Cypress - Fatal编程技术网

如何在cypress中使用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

我为异步POST调用轮询任务的方式正确吗???因为程序控制不在等级库文件中输入“while”循环。请帮忙! 上次查询:


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();
            }
        } );
    }