WebdriverIO测试在CircleCI流水线中创建会话失败求助
WebdriverIO在CircleCI上「Failed to create session」问题解决
核心原因
本地运行正常但CI环境报错,本质是CircleCI的干净环境中没有启动可用的浏览器驱动或Selenium服务,本地你可能已预装Chrome+ChromeDriver或手动启动了Selenium,但CI环境需要显式配置服务。
两种可行解决方案
方案1:使用CircleCI原生浏览器服务(推荐)
无需额外安装Selenium镜像,直接利用CircleCI的环境配置Chrome及驱动,同时调整wdio配置适配:
1. 修改CircleCI config.yml
添加Chrome安装与驱动配置:
version: 2.1 jobs: test: docker: - image: cimg/node:20.10.0 # 匹配你的项目Node版本 steps: - checkout - run: npm install # 安装Chrome及ChromeDriver - run: name: Setup Chrome Environment command: | sudo apt-get update sudo apt-get install -y chromium-browser chromium-chromedriver sudo ln -s /usr/lib/chromium-browser/chromedriver /usr/local/bin/chromedriver - run: npm test # 执行测试命令
2. 修改wdio.conf.js
配置Chrome无头模式及必要参数,同时指定ChromeDriver服务:
exports.config = { // 保留原有其他配置 capabilities: [{ browserName: 'chrome', 'goog:chromeOptions': { args: [ '--headless=new', // CI环境必须启用无头模式 '--no-sandbox', // 解决CircleCI容器权限限制 '--disable-dev-shm-usage' // 避免临时内存空间不足 ] } }], services: ['chromedriver'], // 启用WebdriverIO的ChromeDriver服务 hostname: 'localhost', port: 9515 // ChromeDriver默认端口 }
方案2:使用Selenium独立服务器Docker镜像
若依赖Selenium服务,需在CircleCI中启动Selenium容器,同时调整wdio配置指向该服务:
1. 修改CircleCI config.yml
通过多容器配置启动Selenium Chrome镜像:
version: 2.1 jobs: test: docker: - image: cimg/node:20.10.0 - image: selenium/standalone-chrome:latest environment: - SE_NODE_MAX_SESSIONS=1 steps: - checkout - run: npm install - run: npm test
2. 修改wdio.conf.js
配置连接Selenium服务的参数:
exports.config = { // 保留原有其他配置 capabilities: [{ browserName: 'chrome' }], services: [], // 无需启用chromedriver服务 hostname: 'localhost', port: 4444, // Selenium默认端口 path: '/wd/hub' }
关键注意事项
- 无头模式是CI环境的硬性要求:无图形界面环境下,浏览器必须以无头模式启动
- 权限与内存参数:
--no-sandbox和--disable-dev-shm-usage是解决CircleCI容器环境常见问题的必备参数
内容的提问来源于stack exchange,提问作者Bilawal Wajid Ali
相关产品推荐
相关产品推荐

