簡體   English   中英

While 循環元件 state cypress

[英]While loop element state cypress

我有一個問題,我想單擊一個按鈕直到它消失,但次數可能會有所不同,所以我想檢查可見性 state 並且可見 = 真點擊按鈕,當可見 = 假結束測試但問題是我不知道如何將所有鏈從獲取元素循環到最后。 它單擊一次按鈕並由於中斷而停止; 如果我刪除中斷它甚至不會單擊它永遠循環,主要問題是它第一次通過鏈時值是真實的,但它不會重復

cy.get('[idElem]')
      .then($isVisible => {
        return $isVisible.is(':visible');
      })
      .then(value => {
        while (value === true) {
          cy.get('[idElem]').click();
          break;
        }
      });

由於 cypress 的異步特性,您不能將 while/for 循環與 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,此方法設置在 class 中,但您也可以將其作為常規 function 執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM