cypress 登录后等待重定向

Gau*_*aut 3 javascript wait conditional-statements cypress

我正在用 cypress 测试一个网络应用程序。

我登录了我的beforeEach函数。然后,在我的不同测试中,我从cy.visit('mysite.com/url').

我的问题是登录后,网站重定向到网站的特定页面。这种重定向发生在cy.visit我的测试之后。因此,我的测试在重定向页面上运行,它们失败了。

重定向似乎与我可以等待的任何请求无关。

我最终得到了,cy.wait(3000)但不是很令人满意。我的测试有时会失败,因为重定向可能需要 3 秒以上。我不想增加那个时间,因为运行我的测试需要很长时间。

有没有办法做这样的事情:

while (!cy.url().eq('mysite.com/redirection-url')) {
  cy.wait(300);
}
Run Code Online (Sandbox Code Playgroud)

Kri*_*hna 10

赛普拉斯提供断言重试能力。您可以通过以下更改解决重定向 URL 的等待问题

cy.url().should('contain', '/redirection-url')
Run Code Online (Sandbox Code Playgroud)

或者

cy.url().should('eq', 'mysite.com/redirection-url')
Run Code Online (Sandbox Code Playgroud)

这里should断言默认会等待 4 秒并重试cy.url()

您可以通过更新cypress.json文件中的参数来更改默认超时

{
  "defaultCommandTimeout": 30000
}
Run Code Online (Sandbox Code Playgroud)

希望这能解决您的问题。

  • 谢谢 !为了完整起见,“cy.url”在其“options”参数中接受“timeout”键,以用于我们添加的断言。无需修改“defaultCommandTimeout”。 (8认同)
  • 很好的答案,但只是想知道默认命令等待时间不是 4 秒而不是 5 秒吗? (2认同)