Mac下Webdriver.io等工具测试报错:session not created,无法连接渲染器
解决方案:Session Not Created / Unable to Connect to Renderer 问题排查
我之前在Mac上用Webdriver.io+Selenium栈的时候也碰到过几乎一模一样的问题,结合你的版本信息(Selenium 3.9.1、ChromeDriver 2.35、Chrome 64、macOS 10.13.3),大概率是版本兼容、权限或者配置细节的问题,你可以按下面的步骤逐一排查:
1. 优先确认ChromeDriver与Chrome的版本匹配
虽然ChromeDriver 2.35官方标注支持Chrome 62-64,但实际使用中偶尔会出现兼容性小问题。建议你替换为ChromeDriver 2.36(这是Chrome 64的最优匹配版本):
- 下载对应版本的ChromeDriver后,替换掉当前使用的文件
- 执行
chmod +x /path/to/your/chromedriver赋予执行权限 - 把ChromeDriver放到系统PATH目录下(比如
/usr/local/bin),确保Selenium能直接调用
2. 修复ChromeDriver的Mac系统隔离限制
Mac的安全机制可能会阻止未签名的ChromeDriver运行,导致进程闪退:
- 打开「系统偏好设置」→「安全与隐私」,如果看到“chromedriver已被阻止打开”的提示,点击「允许」
- 或者在终端执行命令解除隔离:
xattr -d com.apple.quarantine /path/to/your/chromedriver
3. 调整Webdriver.io的Capabilities配置
在你的wdio.conf.js里,给Chrome添加必要的启动参数,解决renderer连接问题:
capabilities: [{ browserName: 'chrome', 'goog:chromeOptions': { args: [ '--no-sandbox', // 禁用沙箱模式,避免Mac权限限制 '--disable-dev-shm-usage', // 解决/dev/shm空间不足问题 '--disable-gpu', // 针对部分Mac环境的渲染兼容性 '--remote-debugging-port=9222' // 强制开启调试端口,确保renderer连接 ] } }],
4. 手动验证ChromeDriver与Chrome的连接
先跳过Selenium,直接测试ChromeDriver本身是否能正常启动Chrome:
- 在终端单独启动ChromeDriver:
chromedriver - 打开新终端窗口,用curl测试状态:
如果返回curl http://localhost:9515/status{"value":{"ready":true,"message":"ChromeDriver ready for new sessions","build":{"version":"2.36.540470..."}}},说明ChromeDriver本身没问题。 - 尝试手动创建session:
如果能成功返回session信息,那问题出在Selenium与Webdriver.io的集成上。curl -X POST http://localhost:9515/session -d '{"capabilities":{"firstMatch":[{"browserName":"chrome"}]}}'
5. 正确启动Selenium独立服务器
确保启动Selenium时明确指定ChromeDriver的路径,避免Selenium调用错误的版本:
java -jar selenium-server-standalone-3.9.1.jar -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver
按上面的步骤走下来,基本能解决Chrome闪退、session无法创建的问题。如果还是不行,可以检查Chrome是否有自动更新(虽然你说的是64版本,但Mac上Chrome默认自动更新,可能已经升级到更高版本了),或者尝试降级Selenium到3.8.1(部分用户反馈3.9.1和ChromeDriver 2.35有兼容bug)。
内容的提问来源于stack exchange,提问作者Máté Safranka
相关产品推荐
相关产品推荐

