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

WebDriver.IO配置无法加载Chrome扩展的问题求助

解决WDIO+Cucumber加载Chrome扩展时自动添加--disable-extensions的问题

核心原因

WDIO或其依赖的chromedriver服务默认会注入--disable-extensions参数,目的是保证测试环境的纯净性,但这会直接阻止自定义扩展的加载。

解决方案

1. 用--disable-extensions-except强制放行指定扩展

在goog:chromeOptions的args中添加该参数,它会允许指定路径的扩展加载,同时禁用其他扩展,直接抵消默认的--disable-extensions影响:

const extensionPath = path.join(__dirname, '..', 'test');

capabilities: [{
    browserName: 'chrome',
    'goog:chromeOptions': {
      args: [
        `--disable-extensions-except=${extensionPath}`,
        `--load-extension=${extensionPath}`
      ]
    }
  }],

2. 调整chromedriver服务的默认参数

如果使用@wdio/chromedriver-service,需在服务配置中明确覆盖禁用扩展的默认设置:

services: [
    ['chromedriver', {
        args: [`--disable-extensions-except=${extensionPath}`]
    }]
],

3. 修正CRX扩展注入的语法错误

第二种加载方式存在语法错误(用=替代了:),且需确保在异步上下文读取文件,修正后代码:

const extensionPath = path.join(__dirname, '..', 'test');
// 确保这段代码在async函数中执行
const crxBase64 = (await fs.promises.readFile(`${extensionPath}.crx`)).toString('base64');

capabilities: [{
    browserName: 'chrome',
    'goog:chromeOptions': {
      args: [],
      extensions: [crxBase64]
    }
  }],

4. 验证扩展加载状态

测试步骤中可添加验证逻辑,确认扩展是否成功加载:

// 替换为你的扩展ID,打开popup页面验证
await browser.url('chrome-extension://<your-extension-id>/popup.html');
await expect($('body')).toBeDisplayed();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:11:09