
本文详解 SessionNotCreatedException: Could not start a new session 错误的常见成因,聚焦 ChromeDriver 版本不匹配、路径配置错误及执行权限缺失三大关键问题,并提供可立即验证的修复步骤与最佳实践。
本文详解 `sessionnotcreatedexception: could not start a new session` 错误的常见成因,聚焦 chromedriver 版本不匹配、路径配置错误及执行权限缺失三大关键问题,并提供可立即验证的修复步骤与最佳实践。
在使用 Selenium 进行 Web 自动化测试时,org.openqa.selenium.SessionNotCreatedException: Could not start a new session 是开发者最常遭遇的启动失败异常之一。从你提供的堆栈信息可见,根本原因是 Driver server process died prematurely —— 即 ChromeDriver 后台服务进程在初始化阶段意外终止,导致 WebDriver 无法建立与浏览器的有效会话。这不是网络或脚本逻辑问题,而是底层驱动环境配置失效的明确信号。
✅ 核心原因与逐项排查指南
1. ChromeDriver 与 Chrome 浏览器版本必须严格匹配
Chrome 115+ 已全面弃用传统 chromedriver.exe,转而采用 Chrome for Testing 提供的专用驱动套件。但请注意:你下载的不是“驱动”,而是“浏览器”本身 —— 这正是你代码中路径设置错误的根源。
- ✅ 正确做法:访问 Chrome for Testing 官方下载页,根据你的 Chrome 浏览器版本(
115.0.5790.102)查找对应chromedriver的完整版本号(如115.0.5790.102),然后下载chromedriver-mac-x64.zip(macOS)或对应平台压缩包。 - ❌ 常见错误:将
/Users/imtiyaz/Documents/Google Chrome for Testing(这是 Chrome 浏览器.app 的目录)误设为 driver 路径 ——webdriver.chrome.driver必须指向可执行的chromedriver二进制文件(如/Users/imtiyaz/Documents/chromedriver),而非浏览器安装路径。
2. 确保 ChromeDriver 具备可执行权限(macOS/Linux 必做)
在 macOS 或 Linux 系统中,解压后的 chromedriver 默认无执行权限,直接运行会静默失败:
# 终端执行(进入 chromedriver 所在目录) chmod +x chromedriver
验证是否生效:
./chromedriver --version # 应输出类似 "ChromeDriver 115.0.5790.102 (xxx)"
3. 推荐升级:使用 WebDriverManager(免手动管理)
为彻底规避版本与路径问题,强烈推荐改用 WebDriverManager —— 它能自动检测浏览器版本、下载匹配驱动并注入系统属性:
<!-- Maven 依赖(pom.xml) --> <dependency><groupid>io.github.bonigarcia</groupid><artifactid>webdrivermanager</artifactid><version>5.9.2</version><!-- 适配 Selenium 4.10+ --></dependency>
Java 代码改造(无需 System.setProperty):
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.chrome.ChromeDriver;
public class BrowserSetup {
public static void main(String[] args) {
// 自动匹配 Chrome 115+ 并配置驱动
WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();
driver.get("https://rahulshettyacademy.com/seleniumPractise/#/");
}
}
? 提示:WebDriverManager 默认缓存驱动至
~/.cache/selenium/,首次运行需联网;后续复用极快,且支持forceDownload()强制更新。
⚠️ 其他高频干扰项(快速检查清单)
-
端口冲突:若同时运行多个 Selenium 实例(如旧版 standalone server),检查
4444端口是否被占用(lsof -i :4444→kill -9 <pid></pid>)。 -
浏览器实例残留:Chrome 异常退出可能导致后台进程残留,执行
pkill -f "Google Chrome"清理。 -
Selenium 4+ 的新约束:不再支持
DesiredCapabilities,请使用ChromeOptions显式配置(如需禁用沙盒、启用无头模式等):ChromeOptions options = new ChromeOptions(); options.addArguments("--no-sandbox", "--disable-dev-shm-usage"); driver = new ChromeDriver(options);
✅ 总结:三步快速恢复会话
| 步骤 | 操作 | 验证方式 |
|---|---|---|
| ① 修正路径 | System.setProperty("webdriver.chrome.driver", "/full/path/to/chromedriver"); |
文件存在且 ls -l 显示 x 权限 |
| ② 核对版本 |
chrome://version 与 chromedriver --version 输出主版本号一致(如均为 115) |
版本号前三位完全相同 |
| ③ 切换方案 | 引入 WebDriverManager,删除所有 System.setProperty 手动配置 |
运行成功且控制台打印 Using chromedriver 115.0.5790.102
|
遵循以上方案,95% 的 Could not start a new session 问题可于 5 分钟内定位并解决。记住:Selenium 的稳定性始于驱动环境的确定性 —— 版本对齐是底线,自动化管理是未来。











