我一直在寻找解决我在赛普拉斯遇到的 .wait() 问题的方法。我们的应用程序不会同时加载所有数据。对于此类请求,最常见的答案如下:
cy.server();
cy.route('**/api/getData').as('getData');
cy.visit('/home');
cy.wait('@getData');
Run Code Online (Sandbox Code Playgroud)
这根本行不通。您将到达 /customer/12345,但可能还需要几秒钟才能加载全部数据(甚至某些 UI 元素)。所以,检查路线根本没有帮助。我尝试创建别名,但是当我执行以下操作时:
cy.get('#submitButton').as('submit')
Run Code Online (Sandbox Code Playgroud)
然后执行以下操作:
cy.wait('@submit')
Run Code Online (Sandbox Code Playgroud)
由于该按钮尚不存在,因此别名检查失败。
我需要等到所有资源加载完毕才能开始测试元素。我团队中的一位对 Cypress 没有任何了解的开发人员询问我是否可以使用 Window load 事件或 GlobalEventHandler.onload,但我找不到任何有关在 Cypress 中使用这些事件的文档。
我希望所有回答者都能理解一件事,我是一个完全的新手。我有使用 Java、Selenium、Unirest 和 Junit 的经验。我必须彻底改变我对 Cypress 的心态,而且我不懂 Javascript,所以我仍处于学习阶段。在硒中我会
wait.until(ExpectedConditions.elementToBeClickable(By.id<submitButton>));
Run Code Online (Sandbox Code Playgroud)
那么,有没有办法确保在开始运行测试之前加载全部资源?