远程环境运行Protractor启动Chrome异常退出(错误码199)求助
问题分析与解决建议
我之前也遇到过一模一样的问题,尤其是在CI环境或者远程无头Linux服务器上跑Protractor的时候,这种Chrome启动失败的情况特别常见。结合你的环境信息和错误日志,问题主要出在两个地方:无头环境下Chrome的启动参数缺失,以及Chromedriver与Chrome版本不匹配,下面是具体的分析和解决步骤:
一、核心原因分析
- 无头环境缺少图形界面支持:你的远程Linux环境没有桌面环境(X服务器),而Chrome默认需要图形界面才能启动,直接通过Chromedriver调用时会因为无法初始化图形环境而异常退出,错误码199正是这种场景下的典型表现。虽然你手动启动Chrome和Chromedriver都正常,但手动操作可能是在有图形界面的会话里,或者你用了其他参数,和Protractor调用的场景不一样。
- Chromedriver与Chrome版本不兼容:你的Chrome版本是63.0.3239.132,但Chromedriver用的是2.35.x——根据官方兼容性列表,Chromedriver 2.35仅支持Chrome 60-62版本,和你当前的Chrome 63不匹配,这也会导致启动失败。
二、具体解决步骤
1. 为Chrome添加无头模式启动参数
修改你的protractor.conf.js,在capabilities里添加chromeOptions配置,让Chrome以无头模式运行,同时加上必要的参数避免权限和渲染问题:
exports.config = { // ... 其他原有配置 capabilities: { 'browserName': 'chrome', 'chromeOptions': { 'args': [ '--headless', // 无头模式运行 '--disable-gpu', // 禁用GPU加速(Linux环境下可选,但建议加上) '--no-sandbox', // 禁用沙箱模式(解决Linux下权限不足问题) '--window-size=1920,1080' // 设置窗口大小,避免页面布局异常 ] } }, // ... 其他原有配置 };
2. 升级Chromedriver到匹配Chrome 63的版本
Chrome 63对应的兼容Chromedriver版本是2.36(官方支持Chrome 62-64),你可以通过以下方式更新:
- 使用Protractor自带的webdriver-manager更新:
node_modules/.bin/webdriver-manager update --versions.chrome=2.36 - 或者手动下载对应版本的Chromedriver,替换现有
node_modules/chromedriver/lib/chromedriver目录下的文件。
3. 确保远程环境安装了Chrome依赖库
如果上述步骤还没解决,可能是远程Linux缺少Chrome运行所需的系统依赖,执行以下命令安装:
sudo apt-get install -y libxss1 libappindicator1 libindicator7 libgconf-2-4
4. 验证权限设置
确保运行Protractor的用户拥有访问Chrome安装路径、临时目录(/tmp)的权限,避免因为权限不足导致Chrome无法写入临时文件而退出。
三、验证方法
修改配置并完成上述操作后,重新运行你的Protractor命令:
node_modules/.bin/protractor test/e2e/ui_test/protractor_conf_chrome/protractor.conf.js
如果一切正常,Chrome会在无头模式下启动,Protractor测试应该可以顺利执行。
内容的提问来源于stack exchange,提问作者jackchen
相关产品推荐
相关产品推荐

