[英]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.