Chrome更新后执行Selenium测试遇SessionNotCreatedException求助
先看你给出的错误日志:
Starting ChromeDriver 2.37.544337 (8c0344a12e552148c185f7d5117db1f28d6c9e85) on port 36249 Only local connections are allowed.
org.openqa.selenium.SessionNotCreatedException: session not created exception from disconnected: unable to connect to renderer (Session info: chrome=65.0.3325.181) (Driver info: chromedriver=2.37.544337 (8c0344a12e552148c...
这个问题我之前踩过坑!本质就是Chrome浏览器和ChromeDriver版本不兼容:你当前用的ChromeDriver 2.37只支持Chrome 62-64版本,而你的Chrome已经更新到65.0.3325.181,版本完全对不上,自然无法建立session连接渲染器。
给你几个靠谱的解决步骤:
手动匹配版本(最直接)
- 确认Chrome完整版本:打开Chrome → 右上角三个点 → 设置 → 关于Chrome,就能看到精确的版本号(比如你这里的65.0.3325.181)
- 下载对应版本的ChromeDriver:ChromeDriver的版本和Chrome是严格对应的,Chrome 65需要ChromeDriver 2.38(2.38版本支持Chrome 65-67)
- 替换项目中的旧ChromeDriver:把下载好的新Driver文件替换掉原来的,确保你的Selenium代码里指定的Driver路径是新文件的路径
用WebDriverManager自动管理(一劳永逸)
如果你不想每次Chrome更新都手动下载Driver,可以用WebDriverManager工具,它会自动检测当前Chrome版本,下载匹配的ChromeDriver,不用你管版本对应问题。比如Java项目只需要两步:- 引入Maven依赖(如果是Maven项目):
<dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.6.3</version> <!-- 用最新版本即可 --> </dependency> - 在代码里初始化Driver前加一行:
WebDriverManager.chromedriver().setup(); WebDriver driver = new ChromeDriver();
这样以后Chrome再更新,工具会自动同步Driver版本,再也不会碰到这种版本不兼容的问题。
- 引入Maven依赖(如果是Maven项目):
验证修复效果
替换完Driver后,先单独运行ChromeDriver程序(Windows双击chromedriver.exe,Linux/Mac终端运行./chromedriver),如果能正常输出类似Starting ChromeDriver xxx on port xxxx的日志,说明Driver没问题,再运行你的测试代码就应该能正常创建session了。
内容的提问来源于stack exchange,提问作者abrahamstalin

