求助:Selenium启动Firefox抛出SessionNotCreatedException异常
问题重现
初始化Firefox的代码:
DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("marionette", true); FirefoxOptions option= new FirefoxOptions(); option.merge(capabilities); WebDriverManager.firefoxdriver().setup(); WebDriver driver = new FirefoxDriver(option); driver.manage().window().maximize(); driver.get("https://www.google.com/");
运行时抛出错误:
Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:565)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:242)
at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:157)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:110)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:98)
at com.app.selenium.OpenBrowser.main(OpenBrowser.java:27)
Caused by: org.openqa.selenium.WebDriverException: Driver server process died prematurely.
Build info: version: '4.4.0', revision: 'e5c75ed026a'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:226)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:98)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:547)
... 5 more
当前环境:Firefox 112.0.1,Chrome/Edge可正常通过Selenium启动,Selenium版本4.4.0。
排查与修复步骤
1. 简化初始化代码,移除冗余配置
Selenium 4+版本中,DesiredCapabilities已逐步弃用,直接用FirefoxOptions即可,且marionette在新版本Firefox中默认启用,无需手动设置。修改后的代码:
WebDriverManager.firefoxdriver().setup(); FirefoxOptions options = new FirefoxOptions(); WebDriver driver = new FirefoxDriver(options); driver.manage().window().maximize(); driver.get("https://www.google.com/");
2. 确认GeckoDriver版本与Firefox版本匹配
Selenium 4.4.0对应的GeckoDriver版本需要和Firefox 112.0.1兼容。可以通过WebDriverManager自动匹配,也可以手动指定版本:
// 手动指定GeckoDriver版本,适配Firefox 112 WebDriverManager.firefoxdriver().browserVersion("112.0.1").setup();
如果自动匹配失效,可直接下载对应版本的GeckoDriver(Firefox 112对应GeckoDriver 0.32.0+),解压后放到系统PATH目录,或者在代码中指定路径:
options.setBinary("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); // 指定Firefox安装路径 System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe");
3. 清理残留进程
打开任务管理器,结束所有firefox.exe和geckodriver.exe进程,再重新运行代码。
4. 禁用Firefox自动更新
Firefox自动更新可能导致版本不兼容,进入Firefox设置→常规→Firefox更新,选择“检查更新,但让我选择是否安装”,避免自动升级后与GeckoDriver不匹配。
5. 提升运行权限
部分系统权限限制可能导致GeckoDriver无法启动Firefox,尝试用管理员权限运行IDE或命令行。
6. 检查Firefox版本类型
如果使用便携版或修改版Firefox,需在FirefoxOptions中明确指定Firefox二进制文件的完整路径,确保路径正确无误。
内容的提问来源于stack exchange,提问作者Muskan Gupta

