You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:21:44