Travis CI Windows环境跑Node.js测试时报找不到Chrome二进制错误
Windows环境Travis CI下Chrome二进制找不到的解决方法
这个报错的核心触发逻辑是:Travis CI的Windows执行节点上,通过addons.chrome.stable安装的Chrome不会自动将自身路径加入系统可执行文件搜索目录,项目依赖的chromedriver启动时会在默认搜索路径下定位不到Chrome程序,最终抛出退出码为7的错误。你观察到的“先显示1个测试用例通过再抛错”是正常流程——那个通过的用例是纯Node逻辑测试,没有触发WebDriver的浏览器初始化动作,等执行到需要启动浏览器的用例时,才会触发Chrome路径校验的逻辑。
按优先级调整配置即可解决
- 在
.travis.yml中新增全局环境变量,直接向chromedriver指定Chrome的实际安装路径,跳过自动路径搜索环节:env: global: - CHROME_BIN="C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" - webdriver_chrome_driver="node_modules/chromedriver/lib/chromedriver/chromedriver.exe" - 不要依赖项目本地固化的chromedriver版本,在测试正式执行前,动态拉取和当前安装的Chrome稳定版完全匹配的chromedriver文件,避免版本不匹配触发的路径识别失效:
在配置中新增before_script段,加入版本匹配的前置命令:before_script: - npx webdriver-manager update --chrome - 补上Windows环境的权限调整命令:Travis的Windows节点默认对
C:\Program Files目录的权限管控较严,运行测试的普通用户可能没有读取Chrome程序的权限,需要提前放开权限:
在before_script段追加权限配置命令:before_script: - icacls "C:\\Program Files\\Google\\Chrome" /grant travis:F /T - npx webdriver-manager update --chrome
调整完成后的完整.travis.yml参考
language: node_js node_js: - node os: windows addons: chrome: stable env: global: - CHROME_BIN="C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" - webdriver_chrome_driver="node_modules/chromedriver/lib/chromedriver/chromedriver.exe" before_script: - icacls "C:\\Program Files\\Google\\Chrome" /grant travis:F /T - npx webdriver-manager update --chrome script: - npm test
内容的提问来源于stack exchange,提问作者Iqbal Singh
相关产品推荐
相关产品推荐

