javascript 为什么我们需要使用cy.wait()如果cypress提供自动等待之前显示错误元素没有找到?

q9yhzks0  于 2023-03-06  发布在  Java
关注(0)|答案(2)|浏览(194)

正如我们所知,我们可以在cypress中设置默认超时,如果元素不存在,cypress将在返回错误元素未找到之前等待该特定时间。
那么我们为什么要使用cy.wait()呢?有没有什么特定的例子需要我们使用cy.wait()呢?

dly7yett

dly7yett1#

您应该更喜欢超时而不是等待,因为如果满足条件,超时将更早返回。

// timeout - up to maximum time
cy.get(selector, {timeout:10_000})
  .should('be.visible')

// wait - fixed time
cy.wait(10_000)
cy.get(selector)
  .should('be.visible')

cy.wait(time)的好处是什么--如果您有一个不稳定的测试,您可以添加一个固定的等待 * 临时 *,以确定您需要额外超时的地方。

eimct9ow

eimct9ow2#

您是正确的,您应该使用默认的命令timeout来等待元素。
cy.wait()的主要用例是使用cy.intercept()等待拦截的网络调用。
通常,您会看到类似下面的内容,因此测试执行不会继续,直到特定的网络响应返回。

cy.intercept('**/api/my-api').as('api');

// do something to trigger network call

cy.wait('@api').should(/* assert network response here */);

还有另一个等待任意时间的用例,尽管这是一个反模式,通常不应该使用。

cy.wait(5000); // wait 5 seconds

来源:https://docs.cypress.io/api/commands/wait

相关问题