使用WebdriverIO自动匹配Edge版本下载Edge Driver遇报错求助
问题场景
使用NodeJS结合WebdriverIO编写测试用例,需要获取与已安装Edge浏览器版本匹配的Edge Driver。安装wdio-chromedriver-service后,尝试通过设置环境变量$env:EDGECHROMIUMDRIVER_VERSION = "LATEST"或在.npmrc中配置edgechromiumdriver_version=LATEST来自动匹配版本,执行npm install时出现以下错误:
npm ERR! code 1
npm ERR! path C:\Repo\test\ui-test\node_modules\msedgedriver
npm ERR! command failed
npm ERR! command C:\windows\system32\cmd.exe /d /s /c node install.js
npm ERR! C:\Users**~1\AppData\Local\Temp\��108.0.1462.76
npm ERR! \msedgedriver is not writable: The argument 'path' must be a string or Uint8Array without null bytes. Received 'C:\Users***~1\AppData\Local\Temp\��1\x000\x008\x00.\x000\x00.\x001\x004\x006\x002\x00.\x007\x006\x00\r\x00\n' +
npm ERR! '\x...
npm ERR! Can not find a writable tmp directory...
可行解决方案
1. 手动指定具体Edge Driver版本
放弃使用LATEST自动检测,直接设置与本地Edge完全一致的版本号:
- 环境变量方式(PowerShell):
$env:EDGECHROMIUMDRIVER_VERSION = "108.0.1462.76" # 替换为你的Edge实际版本 .npmrc配置方式:edgechromiumdriver_version=108.0.1462.76 # 替换为你的Edge实际版本
设置完成后重新执行npm install。
2. 手动下载并配置Edge Driver
如果自动安装始终报错,直接手动操作:
- 打开Edge浏览器,在地址栏输入
edge://version/查看当前版本号 - 下载对应版本的Edge Driver(匹配系统位数)
- 解压后将
msedgedriver.exe放在项目的node_modules/.bin目录,或添加到系统PATH环境变量 - 在WebdriverIO配置文件中指定Driver路径:
exports.config = { // 其他配置项 services: [ ['chromedriver', { driverPath: './node_modules/.bin/msedgedriver.exe' // 替换为你的实际路径 }] ] }
3. 修复临时目录权限或指定自定义临时目录
- 右键以管理员身份运行终端,重新执行
npm install - 手动指定npm的临时目录(需确保目录存在且有读写权限):
npm config set tmp "C:\temp\npm-temp"
设置后重新执行安装命令。
4. 清理缓存后重装
清理npm缓存和残留依赖,重新安装:
npm cache clean --force rm -rf node_modules rm package-lock.json npm install
内容的提问来源于stack exchange,提问作者prasanth

