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

Gentoo环境下Selenium+Firefox+Xvfb连接拒绝问题求助

排查Gentoo上Selenium FirefoxDriver连接拒绝问题

根据你提供的日志、进程信息和环境配置,我梳理了几个针对性的排查方向,帮你定位org.openqa.selenium.WebDriverException: connection refused的问题:

1. 验证Marionette端口的可达性

从日志看,Firefox已经启动Marionette并监听2828端口,但Selenium还是连不上。首先要确认tomcat用户能不能正常访问这个本地端口:

  • 切换到tomcat用户:
    su - tomcat -s /bin/bash
    
  • 用nc工具测试端口连通性:
    nc -zv 127.0.0.1 2828
    

如果连接失败,说明要么端口没真正监听,要么有权限/安全模块阻止了连接。

2. 检查Xvfb配置与Firefox Headless的冲突

你的进程里Firefox已经加上了--headless参数,而Firefox 55+原生支持headless模式,不需要依赖Xvfb。当前Xvfb配置里有-nolisten tcp,可能和DISPLAY变量传递有冲突:

  • 先临时停止Xvfb服务:
    /etc/init.d/Xvfb stop
    
  • 修改tomcat启动脚本,确保DISPLAY变量被清空(或者不设置),然后重启tomcat,测试应用是否正常运行。
  • 如果不需要Xvfb,可以直接移除相关配置,避免不必要的环境干扰。

3. 确认tomcat用户的Firefox运行权限

手动模拟tomcat用户启动Firefox,看是否有隐藏错误:

su - tomcat -s /bin/bash
/opt/firefox/firefox -marionette --headless -profile /tmp/test_profile

观察启动过程是否报错,比如依赖库缺失、权限不足无法写入临时目录等。如果启动失败,根据报错信息修复(比如安装缺失的Firefox依赖,给/tmp目录添加tomcat用户的读写权限)。

4. 检查环境变量的传递

全局设置的DISPLAY=:99可能没有被tomcat进程继承。可以:

  • 编辑tomcat的启动脚本(比如/etc/init.d/tomcat8),在启动命令前添加export DISPLAY=:99;
  • 或者在tomcat的setenv.sh文件中添加该环境变量,确保服务启动时能获取到正确的DISPLAY值。

5. 调整Firefox启动参数

给FirefoxOptions添加几个常用的兼容参数,避免环境限制:

options.addArguments("--headless");
options.addArguments("--disable-gpu");
options.addArguments("--no-sandbox"); // 非root用户运行Firefox时常用
options.addArguments("--disable-dev-shm-usage"); // 解决/dev/shm空间不足导致的启动失败
options.setBinary("/usr/bin/firefox-bin"); // 明确指定Firefox二进制路径,避免路径问题

同时可以指定Firefox日志路径,方便排查启动细节:

System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE, "/var/log/tomcat8/firefox.log");

6. 排查安全模块限制

如果Gentoo启用了SELinux或AppArmor,可能会阻止tomcat进程连接本地端口或Firefox进程的网络操作:

  • 临时关闭SELinux测试:
    setenforce 0
    
  • 查看audit日志(/var/log/audit/audit.log),有没有相关的拒绝记录;
  • 如果是AppArmor,检查tomcat和Firefox的profile配置,确保允许必要的网络操作。

7. 版本兼容性验证

虽然你用的geckodriver 0.20.1、Firefox 60.0、Selenium 3.12.0理论上兼容,但可以尝试升级geckodriver到0.21.0(支持Firefox 57-61),有时候小版本的补丁能解决连接问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:28:47