Protractor测试流水线报错:退出码135/199及update-config.json缺失问题
针对你遇到的两个webdriver-manager执行错误,我整理了具体的原因分析和解决方案:
一、指定Chrome版本时出现退出码135(找不到update-config.json)
这个错误通常是因为webdriver-manager的配置文件未正确生成、权限不足,或者依赖安装不完整导致的。可以按以下步骤排查:
重新安装Protractor依赖
先确保本地的Protractor和webdriver-manager依赖是完整的,执行:npm install protractor --save-dev这会重新安装所有相关依赖,自动生成必要的配置文件。
清理旧缓存并重新初始化
先清理webdriver-manager的旧缓存文件,再重新执行update命令:node_modules/protractor/bin/webdriver-manager clean node_modules/protractor/bin/webdriver-manager update --versions.chrome=77.0.3865.10清理操作会移除旧的配置和驱动文件,让webdriver-manager重新生成
update-config.json。检查运行权限
如果你的流水线是在Linux/macOS环境下运行,要确保执行命令的用户拥有读写node_modules目录及webdriver-manager配置目录的权限。权限不足会导致无法创建或读取update-config.json,进而触发退出码135。
二、不指定版本时出现退出码199(Chrome版本相关错误)
退出码199本质是ChromeDriver与本地Chrome浏览器版本不兼容导致的——旧版本的webdriver-manager无法自动匹配最新的Chrome版本,或者流水线环境中安装的Chrome版本与默认下载的ChromeDriver不匹配。解决方法如下:
确认流水线环境的Chrome版本
先在流水线环境中执行命令查看当前Chrome版本:google-chrome --version # Linux/macOS chrome --version # Windows根据输出的版本号,指定对应版本的ChromeDriver进行下载(比如你之前尝试的77.0.3865.10就是对应Chrome 77.x版本的Driver)。
固定Chrome和ChromeDriver版本
在流水线中明确指定Chrome的安装版本(比如通过包管理工具安装特定版本的Chrome),然后对应执行带版本参数的webdriver-manager update命令,确保两者版本完全匹配。指定Chrome执行路径
如果webdriver-manager无法自动找到Chrome浏览器,可以设置环境变量CHROME_BIN指定Chrome的绝对路径:# Linux示例 export CHROME_BIN=/usr/bin/google-chrome # Windows示例(PowerShell) $env:CHROME_BIN = "C:\Program Files\Google\Chrome\Application\chrome.exe"设置后再执行webdriver-manager的update或测试命令。
内容的提问来源于stack exchange,提问作者Aleksandar Todorov

