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

Cypress基础认证点击取消仍未解决,如何关闭认证弹窗?

解决Cypress基础认证弹窗无法关闭的问题

如果常规的auth配置和URL嵌入账号密码无效,可以试试以下几种方案:

方案1:拦截请求并添加Authorization头

HTTP基础认证本质是通过请求头Authorization传递凭证,直接在请求拦截中添加该头可以绕过浏览器弹窗:

// 拦截所有请求,注入认证头
cy.intercept('*/*', (req) => {
  const credentials = btoa('your-username:your-password'); // 编码用户名和密码
  req.headers['Authorization'] = `Basic ${credentials}`;
});

cy.visit('/');

方案2:检查URL编码与baseUrl配置

如果使用URL嵌入账号密码的方式,注意密码中的特殊字符(如@、#、&)需要URL编码,同时确保Cypress的baseUrl配置正确:

// 编码特殊字符后的示例(比如密码包含@,编码为%40)
cy.visit('https://username:password%40@ems.layernote.com');

如果配置了baseUrl,相对路径结合auth选项时要确保路径匹配:

// cypress.config.js中配置baseUrl: 'https://ems.layernote.com'
cy.visit('/', {
  auth: {
    username: 'your-username',
    password: 'your-password'
  }
});

方案3:处理自定义认证弹窗

如果网站的认证弹窗是自定义模态框(非标准HTTP基础认证),直接操作弹窗内的表单元素:

cy.visit('/');
// 等待弹窗加载完成,输入凭证并提交
cy.get('[name="username"]').type('your-username');
cy.get('[name="password"]').type('your-password');
cy.get('button[type="submit"]').click();

方案4:修改浏览器启动参数

针对Chrome浏览器,可以添加启动参数强制处理认证:
在cypress.config.js中配置:

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on('before:browser:launch', (browser = {}, launchOptions) => {
        if (browser.name === 'chrome') {
          // 添加认证白名单,自动处理指定域名的认证
          launchOptions.args.push('--auth-server-whitelist=ems.layernote.com');
          launchOptions.args.push('--auth-negotiate-delegate-whitelist=ems.layernote.com');
        }
        return launchOptions;
      });
    },
  },
});

内容的提问来源于stack exchange,提问作者Barış Can Ateş

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:57:10