Cypress:如何等待所有请求完成

Cypress:如何等待所有请求完成,cypress,Cypress,我正在使用cypress测试我们的web应用程序 在某些页面中,存在多次执行的不同端点请求。[例如GET/A GET/B GET/A] 在cypress中,等待所有请求完成并保证页面已完全加载的最佳做法是什么 我不想使用大量的cy.wait()命令来等待处理所有请求。(每个页面中有许多不同的请求集)默认情况下,cypress会等待60秒以加载页面。这段时间可以在项目中的cypress.json中配置。或您可以在访问某个页面后使用cy.pause(),它将暂停测试,您可以确保该页面已加载,然后继续

我正在使用cypress测试我们的web应用程序

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

在cypress中,等待所有请求完成并保证页面已完全加载的最佳做法是什么


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

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

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

  • 使用

    $('document').ready(函数(){ //准备好后运行的代码 });

  • 问题是,在初始加载之后,页面上的某些操作可能会启动第二次加载

  • 选择像图像这样的元素,或者选择并等待加载。这种方法的问题是,其他一些元素可能需要更多的时间

  • 确定等待api请求的维护时间(我个人使用4000用于我的应用程序),并在需要加载页面的位置放置cy.wait(mandatoryWaitTime)

  • 您可以使用cypress中的功能。使用此选项,您可以截获所有Get请求,并等待它们全部执行:

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

    您的代码片段是正确的,但只有在您事先知道所有请求的情况下,这才有效。另外,如果在页面中有/users请求两次,则必须复制代码并执行wait两次。您可以从开发人员工具签出所有XHR请求。如果有/users两次,上面的代码段将等待两个请求完成。你不必重复。我会尝试,但不确定一次等待是否足够。请求(到同一个端点)不相关,可以随时执行。好的想法是
    ***/users
    应该匹配页面上的所有请求端点,否则它将不起作用。请参阅本教程-等待所有
    cy.route()
    发生可能不够,最好在DOM中找到一些指示符。我通常会寻找一些我知道最后加载的内容(文本、图像)。