如何在Cypress中阻止不必要的XHR请求运行?
Cypress 阻止多余XHR请求运行方案
方案1:拦截并中止无效请求(Cypress 6.0及以上版本适用)
使用官方内置的cy.interceptAPI可匹配所有XHR、fetch类型的请求,按需拦截不需要的请求:
- 屏蔽特定第三方请求(适用于埋点、广告、统计类不影响主业务的请求):
// 可放在beforeEach钩子中全局生效,也可在单条用例前单独配置 cy.intercept('https://www.google-analytics.com/**', {statusCode: 204}) cy.intercept('https://hm.baidu.com/**', {forceNetworkError: true})
- 配置白名单仅放行业务域请求:
cy.intercept('*', (req) => { // 仅匹配你的业务域名,其余所有请求直接销毁 if(!req.url.includes('你的业务域名.com')) { req.destroy() } })
方案2:仅隐藏XHR日志(无需阻止请求实际运行)
如果你只是不想在测试运行器的命令列表中看到大量XHR记录,不需要真的拦截请求,可以在全局配置文件中添加日志过滤规则:
- 打开
cypress/support/e2e.js文件(Cypress 10以下版本为cypress/support/index.js) - 添加如下代码:
Cypress.on('log:added', (log) => { if (log.instrument === 'command' && ['request', 'intercept'].includes(log.name)) { log.display = false } })
注意事项
不要随意屏蔽业务主流程依赖的XHR请求,否则会导致页面功能异常,测试结果失效,仅建议屏蔽不影响页面正常交互的第三方请求。

内容的提问来源于stack exchange,提问作者AlexWhite
相关产品推荐
相关产品推荐

