赛普拉斯:如何等待所有请求完成

时间:2020-11-03 11:22:20

标签: cypress

我正在使用cypress来测试我们的Web应用程序。

在某些页面中,存在多次执行的不同端点请求。 [例如GET / A GET / B GET / A]。

在cypress中最好的做法是等待所有请求完成并确保页面已完全加载。

我不想使用ton cy.wait()命令来等待所有请求被处理。 (每个页面中有很多不同的请求集)

3 个答案:

答案 0 :(得分:2)

根据Cypress FAQ,没有确定的方法。但我将分享一些我使用的解决方案:

  1. 使用JQuery sintax supported by cypress

    $('document')。ready(function(){ //准备就绪后运行的代码 });

问题在于,初始加载后-页面上的某些操作可以启动第二次加载。

  1. 选择一个元素(例如图像)或选择并等待其加载。这种方法的问题在于某些其他元素可能需要更多时间。

  2. 确定您将等待api请求的强制性时间(我个人使用4000作为我的应用程序),然后将cy.wait(mandatoryWaitTime)放置在需要加载页面的位置。

答案 1 :(得分:2)

您可以使用赛普拉斯的cy.route()功能。使用此方法,您可以拦截所有Get请求并等待它们全部执行:

cy.server()
cy.route('GET', '**/users').as('getusers')
cy.visit('/')
cy.wait('@getusers')

答案 2 :(得分:-1)

默认情况下,cypress等待60秒等待页面加载。可以在项目的cypress.json中配置该时间。或者...您可以在访问某些页面后使用cy.pause()-它会暂停测试,您可以确保该页面已加载然后恢复。