WebdriverIO在CircleCI任务中无法启动浏览器请求超时问题求助
问题核心原因
你的报错本质是Chrome在CircleCI无图形界面的容器环境中启动失败,导致chromedriver接收新建会话请求后无响应,最终触发超时。常见错误点和修复方案如下:
修复方案
优先补全Chrome无头模式启动参数
CircleCI的容器环境没有桌面图形层,必须给Chrome配置无头启动相关参数才能正常运行,修改你的wdio.conf.js中goog:chromeOptions配置,补充以下参数:'goog:chromeOptions': { args: [ '--headless=new', // Chrome 112+版本用该参数,更低版本可替换为--headless '--no-sandbox', // 容器环境root用户运行Chrome必须加该参数 '--disable-dev-shm-usage', // 规避CircleCI容器共享内存不足导致Chrome崩溃的问题 '--disable-gpu', // 禁用GPU加速避免无头模式报错 '--window-size=1920,1080' ] }解决Chrome和chromedriver版本不兼容问题
你同时用了CircleCI的browser-tools安装全局chromedriver,和wdio的chromedriver-service,二者容易出现版本不匹配的情况,二选一即可:- 要么删除CI配置中的
- browser-tools/install-chromedriver步骤,让chromedriver-service自动下载和当前Chrome版本匹配的驱动 - 要么在wdio配置中指定用全局安装的chromedriver路径:
services: [ ['chromedriver', { chromedriverCustomPath: '/usr/local/bin/chromedriver' }] ]- 要么删除CI配置中的
可选调试与优化
可以在CI的测试执行步骤前加版本校验步骤,提前排查版本问题:- run: name: 校验Chrome和驱动版本 command: | google-chrome --version chromedriver --version如果CI资源紧张启动慢,可以在wdio配置中调大超时阈值:
connectionRetryTimeout: 120000 // 单位毫秒,设置为2分钟超时
内容的提问来源于stack exchange,提问作者user6537905
相关产品推荐
相关产品推荐

