启动Firefox浏览器时触发SessionNotCreatedException错误,请求排查解决
看起来你在使用Selenium启动Firefox时遇到了会话创建失败的问题,根源是驱动进程启动超时。先整理下你的环境信息和问题细节:
环境版本信息
- Firefox版本: 114.0.1 (64bit)
- selenium-java jars版本: 4.10.0
- gecko driver版本: 0.33.0
- Java版本: 17
测试代码
package webdriverexamples; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class Add { public static void main(String args[]) { System.setProperty("webdriver.gecko.driver","F:\\geckodriver.exe"); WebDriver driver=new FirefoxDriver(); driver.navigate().to("https://www.google.com/"); driver.close(); } }
报错信息
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.
Host info: host: 'LAPTOP-XXXXXXXX', ip: 'XXX.XXX.X.X'
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:549)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:227)
at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:154)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:151)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:146)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:130)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:125)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:110)
at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:100)
at webdriverexamples.Add.main(Add.java:8)
Caused by: org.openqa.selenium.WebDriverException: Timed out waiting for driver process to start.
Build info: version: '4.10.0', revision: 'c14d967899'
System info: os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.7'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:215)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:119)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:531)
... 9 more
排查解决步骤
1. 优先尝试去掉手动设置驱动路径(Selenium 4.6+推荐方案)
从Selenium 4.6.0开始,框架已经支持自动驱动管理,不需要手动调用System.setProperty来指定驱动路径。你可以直接删除那行代码,让Selenium自动下载并匹配对应版本的GeckoDriver,这样能避免大部分版本不匹配和路径错误的问题。修改后的代码如下:
package webdriverexamples; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class Add { public static void main(String args[]) { // 去掉System.setProperty这一行 WebDriver driver=new FirefoxDriver(); driver.navigate().to("https://www.google.com/"); driver.close(); } }
2. 确认GeckoDriver与Firefox版本兼容性
虽然0.33.0理论上支持Firefox 113及以上版本,但还是建议你再次确认两者的版本匹配关系。如果不确定,直接用Selenium的自动驱动管理是最稳妥的。
3. 检查驱动路径的正确性
如果你坚持要手动指定驱动路径,请确认:
F:\\geckodriver.exe这个路径确实存在,文件没有被删除或移动- 文件名拼写正确(Windows不区分大小写,但最好和实际文件名一致)
- 你的Java程序有访问该文件的权限(比如没有被杀毒软件隔离,或者尝试以管理员身份运行IDE)
4. 指定Firefox二进制文件路径(如果Firefox不是默认安装)
如果你的Firefox没有安装在系统默认路径,Selenium可能找不到浏览器程序。这时候可以手动指定Firefox的安装路径:
package webdriverexamples; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions; public class Add { public static void main(String args[]) { FirefoxOptions options = new FirefoxOptions(); // 替换成你实际的Firefox安装路径 options.setBinary("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(options); driver.navigate().to("https://www.google.com/"); driver.close(); } }
5. 检查Firefox本身是否能正常运行
手动打开Firefox浏览器,确认它能正常启动、加载网页,没有崩溃或报错。如果Firefox本身有问题,驱动自然无法启动它。必要时可以重装Firefox试试。
6. 排查系统权限或杀毒软件拦截
有时候杀毒软件或Windows Defender会拦截GeckoDriver的启动,导致超时。可以暂时关闭杀毒软件试试,或者把GeckoDriver和Firefox添加到信任列表中。
备注:内容来源于stack exchange,提问作者Rajesh

