使用Selenium v3.4.0与geckodriver启动Firefox 45.0.1时遇连接拒绝异常求助
Firefox启动失败:Connection Refused问题排查与解决
你遇到的connection refused错误核心原因是版本兼容性不匹配,你的Firefox、Selenium和Geckodriver版本组合存在严重适配问题,具体分析和解决方案如下:
问题根源分析
你的版本组合存在明显的适配冲突:
- Firefox 45.0.1:属于非常早期的版本,Marionette(Firefox的自动化协议)还处于实验阶段
- Selenium 3.4.0:开始默认使用Geckodriver作为Firefox的驱动程序
- Geckodriver 0.20.1:仅支持Firefox 52及以上版本,完全不兼容Firefox 45
这种版本错位导致Geckodriver无法与老版本Firefox建立通信连接,最终抛出连接拒绝的异常。
解决方案(两种可选)
方案一:升级Firefox版本(推荐)
将Firefox升级到与Geckodriver 0.20.1兼容的版本,比如Firefox 52.x ~ 60.x(可参考Geckodriver官方说明,0.20.1原生支持Firefox 52及以上)。升级后,你的脚本2可以直接正常运行,无需额外配置:
System.setProperty("webdriver.gecko.driver", "D:\\selenium\\Geckodriver\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("https://www.google.com");
方案二:保留Firefox 45,调整驱动与脚本
如果不想升级Firefox,需要做以下两步调整:
- 降级Geckodriver:下载支持Firefox 45的Geckodriver版本,比如geckodriver-v0.11.1-win32(该版本适配Firefox 45+),替换当前的Geckodriver文件。
- 修改脚本配置:启用Marionette兼容模式(Firefox 45的Marionette为实验性功能),脚本调整为:
System.setProperty("webdriver.gecko.driver", "D:\\selenium\\Geckodriver\\geckodriver.exe"); DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette", true); WebDriver driver = new FirefoxDriver(capabilities); driver.get("https://www.google.com");
或者,你也可以完全不用Geckodriver,使用Selenium的Legacy Firefox Driver(仅适用于Firefox 47以下版本),脚本修改为:
// 设置Firefox安装路径,替换为你实际的路径 System.setProperty("webdriver.firefox.bin", "C:\\Program Files\\Mozilla Firefox\\firefox.exe"); DesiredCapabilities capabilities = DesiredCapabilities.firefox(); // 禁用Marionette,使用旧版驱动 capabilities.setCapability("marionette", false); WebDriver driver = new FirefoxDriver(capabilities); driver.get("https://www.google.com");
这种方式不需要Geckodriver,直接调用旧版Firefox驱动程序。
额外注意事项
- 始终确保Firefox、Selenium、Geckodriver三者版本匹配,这是Selenium驱动浏览器的核心前提。
- 若选择升级,建议尽量保持软件版本在主流支持范围内,避免使用过于老旧的版本,减少后续兼容性问题。
内容的提问来源于stack exchange,提问作者Karunagara
相关产品推荐
相关产品推荐

