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

Cypress第二个测试用例无法加载不同域名的问题如何解决?

Cypress 跨域名测试第二个用例无响应解决方案

1. 开启跨域会话隔离配置

Cypress默认会限制单个测试上下文下的跨域访问,即使拆分为独立it块,未开启相关配置时前一个测试的域名上下文会残留,导致第二个站点无法加载:

  • Cypress 10及以上版本在cypress.config.js中添加配置:
const { defineConfig } = require("cypress");
module.exports = defineConfig({
  e2e: {
    experimentalSessionAndOrigin: true,
    // 其余原有配置保留即可
  },
});
  • Cypress 9及以下旧版本在cypress.json中添加配置:
{
  "experimentalSessionAndOrigin": true
}

该配置会自动为每个测试用例创建独立的浏览上下文,隔离Cookie、本地存储、会话存储数据,避免跨域名干扰。

2. 手动添加上下文清理逻辑

在测试文件的beforeEach全局钩子中添加清理逻辑,彻底清除前一个测试的残留数据:

describe('多站点登录测试', () => {
  beforeEach(() => {
    // 清理所有域名下的Cookie
    cy.clearAllCookies({ domain: null })
    cy.clearAllLocalStorage()
    cy.clearAllSessionStorage()
  })

  it('Google站点登录测试', () => {
    cy.visit('https://www.google.com')
    // 原有登录逻辑
  })

  it('Yahoo站点登录测试', () => {
    cy.visit('https://www.yahoo.com')
    // 原有登录逻辑
  })
})

3. 排查全局拦截/跳转逻辑

  • 检查所有全局自定义命令、before/beforeEach全局钩子中是否存在写死的Google域名跳转、页面元素等待逻辑,避免第二个测试执行时被拦截重定向到旧域名,或是在Yahoo页面下等待Google专属元素触发超时卡住。
  • 如果使用cy.session封装登录逻辑,两个站点的登录session需要设置独立的唯一标识,不要共用同一个session名称,避免调用到错误的站点登录缓存。

4. 最小范围验证

单独执行Yahoo站点的测试用例,若单独运行可正常加载,即可确认问题来自前一个测试的上下文残留,完成前两步配置即可解决;若单独运行仍卡住,检查Yahoo站点登录逻辑中是否存在依赖Google页面元素、接口的错误代码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:48:03