You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cypress中使用cy.request测试无效URL并处理网络错误

处理Cypress cy.request的“Network error”问题

错误原因分析

你遇到的“Error in loading page , Network error”通常由以下几种情况导致:

  • 目标域名https://tilesea.c/无效、无法解析,或测试环境无法访问
  • Cypress的网络安全配置拦截了请求
  • 本地防火墙/代理阻止了网络连接
  • 请求未处理失败场景,直接抛出错误中断测试

具体解决步骤

1. 验证域名可用性

先在终端或浏览器中手动测试域名是否可访问:

curl https://tilesea.c/

如果返回无法解析或连接失败,检查域名是否拼写错误(比如是否应为tilesea.com);如果是内部私有域名,确保测试环境已接入对应网络(如VPN)。

2. 调整Cypress网络配置

在cypress.config.js中添加或修改以下配置:

module.exports = defineConfig({
  e2e: {
    // 避免Cypress修改页面代码引发的网络问题
    modifyObstructiveCode: false,
    // 处理跨域或自签证书问题(按需开启)
    chromeWebSecurity: false,
    experimentalSessionAndOrigin: true
  },
});
  • chromeWebSecurity: false会关闭Chrome的跨域安全策略,仅限测试环境使用
  • experimentalSessionAndOrigin用于处理复杂的跨域场景

3. 修改请求代码,捕获错误场景

原代码未处理请求失败的情况,cy.request默认会在网络错误时抛出异常中断测试。可以通过配置参数捕获错误:

it('status', () => {
  cy.request({
    url: 'https://tilesea.c/',
    failOnStatusCode: false, // 非2xx状态码不抛出错误
    failOnNetworkError: false // 网络错误不直接中断测试
  }).then((resp) => {
    if (resp.isNetworkError || resp.status === 0) {
      cy.log('Failed to load URL');
      cy.writeFile('logs/failed.log', 'failed');
    } else {
      // 按需验证正常状态码,比如200
      expect(resp.status).to.eq(200);
    }
  })
})

4. 检查网络环境

如果测试机器处于公司防火墙或代理网络下,尝试切换到不受限制的网络(如手机热点),或联系IT部门开放目标域名的访问权限。

内容的提问来源于stack exchange,提问作者Yashpal Rathore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:35:15