TestNG 6.13.1+ChromeDriver2.37启动Chrome时遇Session Not Created异常求助
解决ChromeDriver "unable to connect to renderer" 异常的实用方案
我在帮人排查TestNG+ChromeDriver自动化测试问题时,碰到过好多次这个异常,结合你给出的环境(Mac OS X 10.13.4、Chrome 65.0.3325.181、ChromeDriver 2.37.544337),给你几个经过验证的解决办法,按优先级尝试:
1. 给Chrome添加关键启动参数
这个方法解决了我90%的类似问题,核心是规避Chrome的沙箱限制和渲染冲突。在初始化ChromeDriver时,加上这些参数:
ChromeOptions options = new ChromeOptions(); // 禁用沙箱模式,解决Mac下的系统权限拦截问题 options.addArguments("--no-sandbox"); // 禁用GPU加速,避免渲染器初始化时的冲突 options.addArguments("--disable-gpu"); // 开启远程调试端口,确保驱动能连接到渲染器 options.addArguments("--remote-debugging-port=9222"); // 禁用浏览器扩展,减少不必要的干扰 options.addArguments("--disable-extensions"); // 初始化驱动 WebDriver driver = new ChromeDriver(options);
2. 确保驱动和浏览器版本匹配+权限正常
虽然ChromeDriver 2.37标注支持Chrome 64-66,但偶尔小版本差异或权限问题也会出状况:
- 重新下载对应版本的ChromeDriver(确保文件没有损坏)
- 在Mac上给ChromeDriver添加执行权限,终端运行:
chmod +x /你的驱动路径/chromedriver
3. 规范TestNG的初始化与销毁流程
有时候TestNG的生命周期管理不当,残留的浏览器进程会导致新会话无法创建:
- 确保
@BeforeTest里的驱动初始化是同步执行的,不要放在异步线程中 - 在
@AfterTest里用quit()而不是close()来彻底关闭浏览器,避免残留进程:
@AfterTest public void teardown() { if (driver != null) { driver.quit(); // 彻底终止浏览器进程,释放资源 } }
4. 清理系统残留进程与环境检查
Mac系统有时候会有残留的Chrome进程占用资源,导致渲染器无法连接:
- 终端运行
pkill -f Chrome杀掉所有Chrome相关进程,然后重新运行测试 - 检查是否有防火墙或安全软件拦截了ChromeDriver和Chrome的本地通信,暂时关闭试试
小提示:如果还是不行,可以尝试升级Chrome到66版本(ChromeDriver 2.37也支持),或者降级到Chrome 64,有时候版本的小兼容性问题也会引发这个异常。
内容的提问来源于stack exchange,提问作者mike
相关产品推荐
相关产品推荐

