簡體   English   中英

賽普拉斯:命令“等待”的替代方案

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

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