[英]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')
});
您应该在cy.intercept
上使用as()
方法,以便正确等待所有请求完成,然后再继续验证 URL 是否已更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.