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

Cypress中如何将localStorage设置到后续访问的子域名?

解决Cypress跨子域名设置localStorage的问题

直接调用localStorage.setItem()会操作Cypress测试 runner 窗口的localStorage,而非当前访问页面的存储,这就是为什么你看到bar条目被加到foo.company.com的原因。要给目标子域名设置localStorage,必须获取当前页面的window对象,再操作它的localStorage。

修改后的测试代码如下:

describe('Login', () => {
  it('Logins foo', () => {
    cy.visit('https://foo.company.com');
    
    // 获取foo页面的window,设置对应localStorage
    cy.window().then((win) => {
      win.localStorage.setItem('foo', 'foo');
    });
  });

  it('Logins bar', () => {
    cy.visit('https://bar.company.com');

    // 获取bar页面的window,设置对应localStorage
    cy.window().then((win) => {
      win.localStorage.setItem('bar', 'bar');
    });
  });
});

关键说明

  • 每个it块是独立的测试上下文,Cypress会自动隔离测试状态,但核心是要确保操作的是当前访问页面的window对象的localStorage,而非测试 runner 自身的存储。
  • 若两个子域名共享主域名(company.com),浏览器默认允许同主域名下的存储访问,但这里的核心问题是window对象的指向错误,修正后即可分别为两个子域名设置独立的localStorage条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:51:14