Cypress单测试访问多URL时已完成XHR请求显示为取消的原因是什么
为什么已完成的XHR请求会显示为已取消状态
这是Cypress测试运行器的UI展示层问题,而非请求真的被取消:
- 你观察到的请求实际已完成的结论是正确的,你采取的等待固定时长、校验页面渲染数据、用
intercept监听请求并等待的方案,都已经保证了首个页面的XHR请求执行完毕,测试结果完全可信。 - 出现已取消标记的原因是:当你在同一个测试中调用第二次
cy.visit()时,Cypress会销毁当前页面的上下文,切换到新页面的执行上下文。此时运行器UI无法将前一个页面上下文中已完成的XHR记录和已销毁的上下文做关联,就会误将这些请求标记为已取消状态,属于已知的UI展示缺陷,不会对测试执行逻辑和结果产生任何影响。
单个测试中是否只能调用一次cy.visit()
这不是Cypress的预期行为:
- 官方完全支持在单个测试用例中多次调用
cy.visit()实现多页面跳转的测试逻辑,该用法是合法的。 - 如果你介意UI上的已取消标记,可以将不同页面的测试逻辑拆分到独立的测试用例中,每个测试用例仅调用一次
cy.visit(),就能避免该展示问题。
内容的提问来源于stack exchange,提问作者Syed Ali
相关产品推荐
相关产品推荐

