使用GeckoDriver与Firefox时遭遇NotConnectedException连接失败求助
解决org.openqa.selenium.firefox.NotConnectedException: 无法连接到127.0.0.1的问题
结合你提供的代码、版本信息和错误日志,这个问题的核心是Selenium、GeckoDriver与Firefox三者版本严重不兼容,下面是具体的分析和解决步骤:
当前环境版本
- Firefox:60.0
- Selenium Jar:2.45
- GeckoDriver:20.1
问题根源拆解
- Selenium版本过于老旧:Selenium 2.45发布于2015年,完全不支持Firefox 48及以上版本默认启用的GeckoDriver驱动模式。Firefox从48版本开始放弃了旧的原生驱动,强制使用GeckoDriver,而旧版Selenium对GeckoDriver的适配几乎为零,这是导致连接失败的主要原因。
- GeckoDriver与Firefox版本不匹配:GeckoDriver 20.1对应的适配版本是Firefox 100+,而你使用的是Firefox 60.0,版本跨度太大,驱动无法正常和浏览器通信。
- 错误日志中的
Potential driver version mismatch ignored due to missing DLLs也侧面印证了版本不兼容引发的驱动加载异常。
可行解决方案
你需要调整三个组件的版本,让它们相互兼容,推荐两种稳定组合:
组合一(适配现有Firefox 60)
如果不想升级Firefox,选择这套匹配方案:
- Selenium Jar:3.141.59(Selenium 3系列的最终稳定版,对旧版Firefox和GeckoDriver支持完善)
- GeckoDriver:0.21.0(专门适配Firefox 57-61版本)
组合二(升级到现代稳定版本)
如果可以升级Firefox,推荐使用长期支持的ESR版本,兼容性和稳定性更好:
- Firefox:115.x(ESR长期支持版)
- Selenium Jar:4.15.0(Selenium 4最新稳定版)
- GeckoDriver:0.33.0(适配Firefox 114+)
额外优化建议
- 修正GeckoDriver路径:Windows系统下,GeckoDriver的路径需要加上
.exe后缀,你的代码里应该写成:
否则系统会找不到可执行文件。System.setProperty("webdriver.gecko.driver", "D:\\Tools\\geckodriver.exe"); - 规范代码写法:升级Selenium后,建议添加Firefox选项提升稳定性,示例代码如下:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions; import java.util.concurrent.TimeUnit; public class loginmethod { @Test public void login() throws InterruptedException { System.setProperty("webdriver.gecko.driver", "D:\\Tools\\geckodriver.exe"); // 添加Firefox启动选项,禁用不必要的功能 FirefoxOptions options = new FirefoxOptions(); options.addArguments("--no-sandbox"); options.addArguments("--disable-extensions"); WebDriver driver = new FirefoxDriver(options); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); // 执行你的业务操作... // 记得关闭浏览器会话 driver.quit(); } } - 修复系统依赖:错误日志中提到缺失
igd10umd64.dll和igd10iumd64.dll,这是Intel显卡驱动的组件,建议更新Intel显卡驱动到最新版本,避免图形渲染问题干扰Firefox启动。
内容的提问来源于stack exchange,提问作者palak
相关产品推荐
相关产品推荐

