簡體   English   中英

Cypress runner 在運行斷言之前沒有等待頁面加載

[英]Cypress runner not waiting for page to load before running assertion

我正在使用 cypress 運行端到端測試,在場景中的某個時刻,我單擊了一個按鈕,該按鈕觸發了對后端 API 和 Stripe 的 API 的多個請求。 一旦所有請求都成功,就會進行重定向。 我試圖斷言 URL 包含一個可以確認重定向成功的關鍵字。

cy.get('[data-cy="payment-form-submit"]').click()
cy.url().should('include', 'somekeyword')

不幸的是,賽普拉斯在評估cy.url()之前不會等待所有請求解決,因此盡管重定向成功,但斷言總是失敗。

我在文檔中讀到它應該等待,但在實踐中無法驗證。 我在這里錯過了什么嗎? 我應該如何解決這個問題?

.should()命令將重試前面的命令,您可以查看是否使用回調運行等效命令並記錄每個調用

cy.url().should(url => {
  console.log(url)                           // 170+ logs in 4 seconds
  expect(url).to.include('somekeyword');
})

您可能需要更長的超時時間,

cy.url({ timeout: 10000 }).should('include', 'somekeyword');

你可以 try.then() 操作,它顯式地等待操作完成。

cy.get('[data-cy="payment-form-submit"]').click().then(()=>{
cy.url().should('include', 'somekeyword')
});

https://example.cypress.io/commands/connectors#then

您應該在cy.intercept上使用as()方法,以便正確等待所有請求完成,然后再繼續驗證 URL 是否已更改。

暫無
暫無

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

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