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

WebdriverIO无头及有头模式下Chrome新版本Basic auth认证问题求助

WebdriverIO Chrome 新版本 Basic Auth 认证兼容方案

方案1:CDP 注入请求头(推荐,全模式兼容)

该方案是当前兼容性最高的实现,同时支持Chrome新旧版本、无头/有头模式,无特殊场景限制。

  • 实现逻辑:通过WebdriverIO内置的Chrome DevTools Protocol接口,在所有请求发出前自动注入Basic Auth认证头
  • 代码示例:
// 可放在全局before钩子或者单个测试套件的前置钩子中
before(async () => {
  // 构造Basic Auth凭证
  const authToken = Buffer.from('你的账号:你的密码').toString('base64')
  // 调用CDP接口设置全局额外请求头
  await browser.cdp('Network', 'setExtraHTTPHeaders', {
    headers: {
      'Authorization': `Basic ${authToken}`
    }
  })
  // 完成设置后再访问目标站点,URL无需拼接账号密码
  await browser.url('https://你的测试站点地址')
})

方案2:Chrome 启动参数配置(适用于整站需要Basic Auth的场景)

如果你的测试环境所有资源都需要Basic Auth校验,可以直接在浏览器启动参数中配置白名单,自动传递认证凭证。

  • 代码示例(修改wdio.conf.js的capabilities配置):
exports.config = {
  // 其他配置省略
  capabilities: [{
    browserName: 'chrome',
    'goog:chromeOptions': {
      args: [
        // 无头模式可保留以下参数,有头模式无需修改也可生效
        // '--headless=new',
        '--auth-server-whitelist="*"',
        '--auth-negotiate-delegate-whitelist="*"',
        '--auth-schemes="basic"'
      ],
      prefs: {
        // 禁用浏览器密码保存提示
        'profile.password_manager_enabled': false,
        'credentials_enable_service': false
      }
    }
  }]
}
  • 注意:该方案会默认给所有访问的站点传递认证凭证,多站点混合测试的场景不推荐使用。

方案3:原生弹窗操作(仅兼容有头模式)

如果你的测试仅需要在有头模式下执行,可以直接操作原生认证弹窗完成校验。

  • 代码示例:
before(async () => {
  await browser.url('https://你的测试站点地址')
  // 等待认证弹窗加载完成,超时时间可自行调整
  await browser.waitUntil(async () => await browser.isAlertOpen(), 5000)
  // 输入账号+Tab键+密码,提交认证
  await browser.sendAlertText(`你的账号\u{E004}你的密码`)
  await browser.acceptAlert()
})
  • 注意:Chrome无头模式不会渲染原生系统弹窗,该方案无法在无头模式下运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:00:07