如何在WebdriverIO中实现ChromeDriver自动更新
WebdriverIO ChromeDriver自动更新解决方案
方案1:使用官方ChromeDriver服务(最适配)
WebdriverIO官方维护的wdio-chromedriver-service原生支持自动匹配更新ChromeDriver,无需人工干预:
- 第一步:安装依赖包
执行命令:npm install @wdio/chromedriver-service chromedriver --save-dev - 第二步:修改wdio配置文件
打开项目中默认的wdio.conf.js,修改services配置项:export const config = { // 其余原有配置不做改动 services: [ ['chromedriver', { // 开启自动下载匹配当前Chrome版本的驱动 autoDownload: true, // 自动检测本地安装的Chrome版本 detectBrowserVersion: true }] ] }
配置完成后每次启动测试前,服务都会自动校验Chrome和ChromeDriver的版本匹配性,版本不对应时会自动下载对应版本的驱动,不会再出现版本不兼容报错。
方案2:Selenium Standalone服务适配(多浏览器场景适用)
如果你的测试框架需要同时兼容Chrome、Firefox等多浏览器,可以使用@wdio/selenium-standalone-service统一管理所有浏览器驱动:
- 安装依赖包:
npm install @wdio/selenium-standalone-service --save-dev - 修改
wdio.conf.js配置:export const config = { // 其余原有配置不做改动 services: [ ['selenium-standalone', { installArgs: { drivers: { chrome: { version: 'latest' } } }, args: { drivers: { chrome: { version: 'latest' } } } }] ] }
该配置会在服务启动时自动拉取最新稳定版Chrome对应驱动,同时也支持对其他浏览器驱动做同样的自动更新配置。
方案3:前置脚本校验更新(无侵入适配现有配置)
如果你不想改动现有框架的服务配置,可以在测试执行前新增一个前置校验脚本,版本不匹配时自动更新ChromeDriver后再执行测试:
- 在package.json中新增执行顺序配置:
{ "scripts": { "pretest": "node ./scripts/update-chromedriver.js", "test": "wdio run ./wdio.conf.js" } } - 自行实现的
update-chromedriver.js只需要完成两个逻辑:获取本地Chrome版本、下载对应版本的ChromeDriver覆盖原有文件即可。
注意:如果你的Chrome为企业域管控的定制版本,可在对应配置中指定固定版本匹配规则,避免自动下载的驱动与定制版Chrome不兼容。
内容的提问来源于stack exchange,提问作者Aman Sharma
相关产品推荐
相关产品推荐

