小编Xgi*_*360的帖子

避免在 Cypress 中使用 .wait() 来加载所有元素

我一直在寻找解决我在赛普拉斯遇到的 .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)

那么,有没有办法确保在开始运行测试之前加载全部资源?

asynchronous typescript cypress

3
推荐指数
1
解决办法
5200
查看次数

标签 统计

asynchronous ×1

cypress ×1

typescript ×1