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

使用Cypress无法在同一标签页打开链接的问题咨询

解决Cypress中链接无target="_blank"却新窗口打开的问题

看起来你遇到的情况不是由HTML的target属性导致的,而是页面中的JavaScript在控制链接的跳转行为!我来给你几种可行的解决思路:

1. Mock window.open 方法拦截新窗口跳转

很多时候,页面会通过JS的window.open()方法来实现新窗口打开,哪怕a标签本身没有target="_blank"。你可以在Cypress里mock这个方法,让它直接在当前标签页跳转:

// 在点击链接前先mock window.open
cy.window().then(win => {
  cy.stub(win, 'open').callsFake((url) => {
    // 把跳转指向当前窗口的location
    win.location.href = url;
    // 返回一个模拟的window对象,避免代码报错
    return { close: () => {} };
  });
});

// 现在再点击链接就会在当前标签页打开了
cy.get('a').eq(0).click();

2. 直接获取href属性手动访问

如果不想mock方法,也可以直接提取链接的地址,用Cypress的cy.visit()来主动跳转:

cy.get('a').eq(0)
  .invoke('attr', 'href') // 获取链接的href值
  .then(href => {
    cy.visit(href); // 在当前标签页访问该地址
  });

⚠️ 注意:如果是跨域链接,你需要在cypress.config.js里配置chromeWebSecurity: false来绕过同源限制。

3. 排查页面的事件绑定逻辑

你可以用浏览器开发者工具的Elements -> Event Listeners面板,查看这个a标签(或者它的父元素)有没有绑定click事件。很多前端框架(比如React、Vue)会通过事件委托来处理跳转,找到对应的JS逻辑后,你可以针对性地禁用这个事件或者mock相关方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 22:02:27