单击按钮后如何等待页面重新加载

时间:2021-07-19 11:27:22

标签: cypress

点击按钮后如何等待页面重新加载?我使用了 cy.wait(3000) 但现在我需要一些非静态命令。

我的代码是:

  cy.get(button).click()
  cy.wait(3000) //because after first click page is reloading
  cy.get(button2).click()

我需要一些东西,比如等待一段时间,直到页面重新加载。但我需要一些非静态命令。

3 个答案:

答案 0 :(得分:1)

您可以为 button2 添加超时以使其可见和可点击。

  cy.get(button).click()
  cy.get(button2, {timeout: 3000}).should('be.visible').click()

现在上面的代码最多等待 3 秒,以便 button2 可见。但如果它更快找到 button2,那么它会点击它,而不是等到 3 秒结束。

答案 1 :(得分:1)

页面通常是逐步加载的,即它们可能会先绘制菜单,然后在页面上加载某种骨架,调用 api,并在数据到达时进行最终渲染。

完成所有这些工作的时间变化很大,尤其是在您尚未优化页面加载的情况下。解决它的最佳方法是让您的 cypress 脚本一次查找一件事,因此它与页面加载保持同步,并且每个都在正常超时范围内。您还可以执行 cy.intercept 以等待 API 请求完成 - 这通常是最长和最易变的操作之一。

答案 2 :(得分:1)

如果您确定页面会重新加载,您可以添加 an assertion 表示初始按钮已经消失,然后点击。如果第二个在重新加载之前在页面上很明显 - 如果你只是为它添加一个断言,它会搞乱测试:

  cy.get(button).click().should('not.exist') //Assertion that the page has started reloading
  cy.get(button2).click() //Here you do not need an assertion for visibility, it is included in cy.get