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

Cypress 12 cy.origin多标签测试遇origin不匹配错误求助

问题原因

报错的核心是**cy.origin的第一个参数必须与实际访问页面的origin完全匹配**,且需要传入纯origin(不带路径的域名部分),而你直接传入了从页面提取的完整Instagram链接(包含路径,比如https://www.instagram.com/blender);同时Cypress将带www和不带www的域名视为两个完全不同的origin,这就导致了预期与实际origin不匹配的报错。

解决方案
  1. 从提取的href中解析出纯origin部分,而非直接传入完整URL
  2. 确保传入cy.origin的origin与实际访问的域名完全一致(带www就用带www的版本)

修改后的代码:

When('I change the origin of my test configuration', () => {
  cy.window().then((win) => {
    cy.stub(win, 'open').as('Open');
  });
  const url = Cypress.config('baseUrl');
  cy.visit(url);
  cy.window().scrollTo('bottom');

  cy.get('.social-icons__instagram')
    .invoke('attr', 'href')
    .then((instaHref) => {
      // 从完整链接中解析出纯origin部分
      const instaOrigin = new URL(instaHref).origin; 
      cy.origin(instaOrigin, { args: instaHref }, (instaHref) => {
        cy.visit(instaHref);
        cy.contains('Allow essential and optional cookies').click();
      });
    });
  cy.visit(url);
});
关键修改点说明
  • 使用new URL(instaHref).origin解析正确origin:比如从https://www.instagram.com/blender中提取出https://www.instagram.com,这才是cy.origin要求的参数格式。
  • 保持访问链接为完整的instaHref,既符合cy.origin的参数规则,又能正确跳转目标页面。
  • 去掉全局变量instaUrlString,改用cy.origin的args参数传递值,更贴合Cypress异步执行逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:31:49