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

Firefox运行测试时抛出SessionNotCreatedException问题求助

解决Selenium+Firefox运行TestNG时的SessionNotCreatedException问题

我来帮你排查并解决这个问题,结合你的版本信息(Selenium 3.6.0、Firefox 56.0、GeckoDriver 0.19.0)和异常日志、代码来看,核心问题出在浏览器二进制路径冲突和Capabilities配置方式上,以下是具体的解决方案:

1. 修正路径冲突,改用FirefoxOptions配置(推荐)

从你的异常日志能看到,DesiredCapabilities里设置的binary=C:\Program Files (x86)\Mozilla Firefox\firefox.exe,但实际驱动识别到的是C:\Program Files\Mozilla Firefox\firefox.exe,路径不一致导致驱动无法正确启动浏览器。

而且在Selenium 3.x版本中,官方更推荐使用FirefoxOptions来替代老旧的DesiredCapabilities,对Marionette驱动的支持更完善。修改后的代码如下:

if(browser.equalsIgnoreCase("firefox")) {
    // 先确保GeckoDriver路径配置正确(如果没加环境变量的话)
    System.setProperty("webdriver.gecko.driver", "你的GeckoDriver文件绝对路径,比如D:\\tools\\geckodriver.exe");
    
    FirefoxOptions options = new FirefoxOptions();
    // 设置你实际的Firefox安装路径,确认是x86还是普通Program Files目录
    options.setBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
    // Firefox 56+默认启用Marionette,显式设置更稳妥
    options.setCapability("marionette", true);
    
    driver = new FirefoxDriver(options);
}

2. 确保GeckoDriver配置到位

如果你的GeckoDriver没有添加到系统PATH环境变量中,一定要在代码开头通过System.setProperty指定驱动的绝对路径,否则Selenium无法找到驱动程序,这也是导致会话创建失败的常见原因。

3. 额外验证步骤

  • 先关闭所有正在运行的Firefox进程,避免进程占用导致驱动无法启动新的浏览器实例;
  • 确认你的Windows 10账号有足够权限访问Firefox的安装目录,避免权限不足的问题;
  • 你的版本组合是兼容的:Selenium 3.6.0支持Firefox 55-57,GeckoDriver 0.19.0适配Firefox 55+,所以版本层面没有问题。

内容的提问来源于stack exchange,提问作者Aparajita Kumari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:25:32