[英]Cypress: Alternative for command 'wait'
我正在尋找等待命令的替代方法。
眾所周知,一個頁面/組件/等。 每次調用時都不會花費相同的時間來加載或簡單地可用。 出於這個原因,我不能依賴具有恆定時間規范的“等待”命令。
所以我正在尋找替代方案。
互聯網上的一些人寫道,命令“then”有助於等待條件滿足。 不幸的是,以下替代方法不適用於我的情況:
cy.get(#element).should('exist').then(() =>{
cy.get(#element).click();
});
我期待您的消息和“等待”的替代方案。 許多問候詹尼
您可以鏈接斷言並像這樣應用超時:
cy.get('#element',{timeout: 5000}).should('be.visible').click()
這將做的是等待並重新查詢直到 5 秒,直到元素在 DOM 上可見,然后單擊它。
謝謝您的回答。
問題是必須增加默認超時。
Cypress.config('pageLoadTimeout', 300000);
我更喜歡 Alapan Das 的上述答案,而不是使用 cy.wait()。 如果您的 url 在點擊元素上發生更改,那么您可以采用另一種方法。
cy.get(#element1).click();
cy.url().should('include','https://xyx.com/abc'); //cypress wait untill this page loads
cy.get(#element2).click();
有關更多詳細信息,請參閱此問題:
根據應用程序,在調用任何操作或斷言之前,有多種方法可以檢查您的頁面/組件/等是否已加載。 以下是一些用於某些場景的示例:
// wait for page load
cy.location('pathname').should('include','/new-path/') // check url is changed
cy.get('.element-on-new-page-only').should('be.visible') // check element is visible on new page
// wait for component load
cy.get('.loading', { timeout: 10000).should('not.exist') // sometimes apps have loading icon/screen so we wait until it is gone with a passed timeout option
cy.get('.component-finished-loadin').should('be.visible')
// wait for component to disappear
cy.get('.component-to-disappear').should('not.exist') // can use 'not.be.visible' if app hides it instead
// wait for text update
cy.get('.element-new-text').should('include.text', 'new text')
但這一切對我不起作用。
就我而言,它是一個 AG-Grid 表。 首先,我單擊“X”列的 header 進行排序。
也就是說,排序前的行中的值為 B。排序后,同一行包含 A。cypress 自動執行該步驟的速度如此之快,以至於它甚至沒有注意到該行已被排序。 我會使用 1 秒的“等待”,然后他會感知排序。
代碼:
cy.get(createColId('name'), {timeout: 10000}).eq(1).should('include.text', 'A');
錯誤超時重試 4000 毫秒后:預期“<div.ag-cell...>”包含文本“A”,但文本為“B”
我的問題不是等到頁面成功加載,而是等到內容存在並且可用/可點擊等。
使用此命令會注意到一個小的改進,但這不是我的問題的解決方案。
Cypress.config('defaultCommandTimeout', 50000);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.