Firefox驱动初始化失败:SessionNotCreatedException(NS_BINDING_ABORTED)求助
Firefox驱动初始化报错NS_BINDING_ABORTED问题排查与解决
环境信息
- Firefox版本:112.0(64位)
- Maven依赖:
io.github.bonigarcia > webdrivermanager,版本5.3.2 - GeckoDriver版本:0.33.0
错误信息
[main] INFO io.github.bonigarcia.wdm.WebDriverManager - Using geckodriver 0.33.0 (resolved driver for Firefox 112) [main] INFO io.github.bonigarcia.wdm.WebDriverManager - Exporting webdriver.gecko.driver as C:\Users\subrav\.cache\selenium\geckodriver\win64\0.33.0\geckodriver.exe org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: Error: NS_BINDING_ABORTED Driver info: org.openqa.selenium.firefox.FirefoxDriver Command: [null, newSession {capabilities=[Capabilities {acceptInsecureCerts: true, browserName: firefox, moz:debuggerAddress: true, moz:firefoxOptions: {profile: UEsDBBQACAgIAHqol1YAAAAAAAA...}}], desiredCapabilities=Capabilities {acceptInsecureCerts: true, browserName: firefox, moz:debuggerAddress: true, moz:firefoxOptions: {profile: UEsDBBQACAgIAHqol1YAAAAAAAA...}}}]\n at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:148) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:106) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:67) at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:165) at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:183) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:158) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:229) at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:157) at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:150) at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:146) at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:131) at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:127) at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:112)
初始化驱动代码
WebDriverManager.firefoxdriver().setup(); FirefoxOptions firefoxOptions = new FirefoxOptions(); System.setProperty("webdriver.firefox.marionette", "true"); System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE, "target/logs.txt"); FirefoxProfile firefoxProfile = new FirefoxProfile(); firefoxProfile.setPreference("browser.download.folderList", 2); firefoxProfile.setPreference("browser.download.manager.showWhenStarting", false); firefoxProfile.setPreference("browser.download.dir", file.getAbsolutePath()); firefoxOptions.setProfile(firefoxProfile); driver = new FirefoxDriver(firefoxOptions);
已尝试但无效的配置
firefoxOptions.setCapability("moz:debuggerAddress", false); firefoxOptions.addArguments("--disable-blink-features=AutomationControlled"); firefoxProfile.setPreference("fission.autoStart", false); firefoxProfile.setPreference("fission.bfcacheInParent", false); firefoxProfile.setPreference("fission.webContentIsolationStrategy",0); firefoxOptions.setProfile(firefoxProfile); driver = new FirefoxDriver(firefoxOptions);
问题原因分析
NS_BINDING_ABORTED错误通常和以下因素相关:
- 版本隐性兼容问题:虽WebDriverManager匹配了GeckoDriver与Firefox版本,但部分组合仍存在未公开的兼容bug;
- 冗余配置冲突:代码中设置的
webdriver.firefox.marionette属性在新版Selenium中已被弃用,会和FirefoxOptions的配置产生冲突; - 进程残留:之前未正常关闭的Firefox/GeckoDriver进程占用资源,导致新会话无法创建;
- 权限不足:GeckoDriver或Firefox无足够权限访问下载目录或创建新进程。
解决方法
1. 清理冗余配置,简化初始化代码
移除已弃用的webdriver.firefox.marionette属性,添加必要的下载类型偏好避免弹窗阻塞:
WebDriverManager.firefoxdriver().setup(); FirefoxOptions firefoxOptions = new FirefoxOptions(); System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE, "target/logs.txt"); FirefoxProfile firefoxProfile = new FirefoxProfile(); firefoxProfile.setPreference("browser.download.folderList", 2); firefoxProfile.setPreference("browser.download.manager.showWhenStarting", false); firefoxProfile.setPreference("browser.download.dir", file.getAbsolutePath()); // 根据实际下载文件类型调整MIME值 firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream,application/pdf,text/csv"); firefoxOptions.setProfile(firefoxProfile); driver = new FirefoxDriver(firefoxOptions);
2. 升级依赖版本
将WebDriverManager升级到最新稳定版,确保依赖兼容性:
<dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.5.3</version> </dependency>
3. 清理残留进程
启动驱动前强制关闭所有相关进程(Windows示例):
// 关闭Firefox和GeckoDriver进程 Runtime.getRuntime().exec("taskkill /F /IM firefox.exe"); Runtime.getRuntime().exec("taskkill /F /IM geckodriver.exe"); Thread.sleep(2000); // 等待进程完全关闭
4. 检查权限与路径
- 确认下载目录
file.getAbsolutePath()存在且有读写权限; - 以管理员身份运行测试程序,避免权限不足问题。
5. 禁用Sandbox模式
如果上述方法无效,添加禁用sandbox的启动参数:
firefoxOptions.addArguments("--no-sandbox"); firefoxOptions.addArguments("--disable-dev-shm-usage");
内容的提问来源于stack exchange,提问作者Subitha
相关产品推荐
相关产品推荐

