我正在使用 cypress 来测试我们的 Web 应用程序,在某些页面中,有不同的端点请求被执行多次,例如 GET /A、GET /B、 GET /A。
为了等待所有请求完成并保证页面已完全加载,赛普拉斯的最佳实践是什么。
我不想使用很多cy.wait()命令来等待所有请求被处理。(每个页面有很多不同的请求组)
Lol*_*ola 21
IMO 的最佳实践是不要担心请求流。
相反,对测试中所需的实际页面元素查询使用适当的超时。
应用程序和服务器之间的通信可能会随着应用程序的变化而变化,如果您尝试处理 100% 的调用,则会创建大量返工。
直接在 后开始对元素进行断言cy.visit()。如果测试因请求仍在进行中而失败,请增加timeout option查询的 。
这种方法简单有效。您不需要保证页面 100% 加载,只需保证元素处于测试状态即可。
一个简单的.should()给你:
cy.get(some-selector)
.should('have.text', 'text-loaded-by-request-call')
Run Code Online (Sandbox Code Playgroud)
小智 2
根据赛普拉斯常见问题解答,没有明确的方法。但我会分享一些我使用的解决方案:
$('document').ready(function() {
//Code to run after it is ready
});
Run Code Online (Sandbox Code Playgroud)
问题是,在初始加载之后,页面上的某些操作可能会启动第二次加载。
选择一个元素(例如图像)或选择并等待其加载。此方法的问题是其他一些元素可能需要更多时间。
确定等待 API 请求的强制时间(我个人在我的应用程序中使用 4000),并在需要加载页面的位置放置 cy.wait(mandatoryWaitTime)。
| 归档时间: |
|
| 查看次数: |
35855 次 |
| 最近记录: |