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

使用Geckodriver与Firefox时连接拒绝,自动化测试脚本故障求助

解决Selenium+Geckodriver+Firefox连接拒绝的问题

我之前也碰到过一模一样的情况——浏览器启动后卡住不加载目标URL,等几秒就抛出连接拒绝的异常,给你几个实用的排查和解决方向:

  • 版本兼容性检查:这是最常见的诱因!geckodriver 0.20.1对Firefox版本有严格适配要求,它一般支持Firefox 57~60版本。如果你的Firefox是更新的版本,旧geckodriver根本没法和它正常通信,直接就会拒绝连接。建议你:

    • 打开Firefox,通过「帮助→关于Firefox」确认当前版本
    • 如果版本不匹配,要么升级geckodriver到对应Firefox版本的适配版,要么降级Firefox到和0.20.1兼容的范围
  • Firefox启动路径与参数验证:从你的日志里看到启动命令是"/usr/bin/firefox/firefox" "-marionette" "--headl...",这里有两个疑点:

    • 路径是否正确?正常情况下Firefox的可执行文件路径应该是/usr/bin/firefox,而非嵌套的/usr/bin/firefox/firefox,你可以手动在终端执行这个路径,看看能不能正常打开Firefox
    • 你的--headl应该是--headless吧?参数不完整也会导致Firefox启动异常,无法响应Marionette的连接请求
  • 端口占用与Marionette配置:Geckodriver默认会随机监听一个端口(比如你这里的37807),如果这个端口被其他进程占用,就会出现连接拒绝。你可以用命令排查:

    lsof -i :37807
    

    如果查到有进程占用,杀掉它再重试。另外,也可以在代码里显式指定Marionette端口,避免冲突:

    from selenium import webdriver
    
    firefox_options = webdriver.FirefoxOptions()
    firefox_options.add_argument('--marionette-port=2828')
    driver = webdriver.Firefox(options=firefox_options, executable_path='/path/to/geckodriver')
    
  • 权限与Headless环境问题:如果是在Linux服务器上运行headless模式,还要注意:

    • 确保geckodriver有执行权限:chmod +x /path/to/geckodriver
    • Headless模式需要虚拟显示支持,你可以用xvfb创建虚拟桌面,或者先设置DISPLAY环境变量再运行脚本:
      export DISPLAY=:0
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:26:06