Ubuntu升级至22.04后Selenium+Firefox连接拒绝错误求助
解决Ubuntu 22.04 LTS升级后Selenium+Firefox连接拒绝(os error 111)问题
以下是针对问题的分步解决方案:
1. 匹配Firefox与geckodriver版本
升级后系统自带的Firefox版本可能更新,导致旧版geckodriver兼容性失效:
- 查看当前Firefox版本:
firefox --version - 下载与Firefox版本对应的geckodriver,替换系统中现有版本,然后赋予执行权限:
chmod +x /usr/local/bin/geckodriver
2. 配置虚拟显示解决X服务器连接失败
Jammy LTS环境下无图形界面运行脚本时,X服务未启动会导致连接失败:
- 安装Xvfb虚拟显示工具:
sudo apt install xvfb - 两种运行方式:
- 用
xvfb-run包裹脚本执行:xvfb-run python your_script.py - 在Selenium代码中配置无头模式及相关参数:
from selenium.webdriver.firefox.options import Options options = Options() options.add_argument('--headless') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') driver = webdriver.Firefox(options=options)
- 用
3. 修复libEGL初始化失败问题
缺失图形依赖库会导致该错误,安装对应组件:
sudo apt install libgl1-mesa-glx libegl1-mesa libgbm1 sudo apt update && sudo apt upgrade mesa-*
4. 调整运行用户与环境变量
- 避免用root用户运行脚本(
/run/user/0是root专属目录,普通用户运行时会有权限冲突),切换到原普通执行用户。 - 检查并设置
DISPLAY环境变量:export DISPLAY=:0 python your_script.py
5. 验证基础连接
- 直接启动geckodriver查看日志,确认自身可正常运行:
geckodriver --log trace - 运行极简测试脚本验证Selenium与Firefox的连接:
from selenium import webdriver from selenium.webdriver.firefox.options import Options options = Options() options.add_argument('--headless') try: driver = webdriver.Firefox(options=options) driver.get("https://www.google.com") print(driver.title) finally: driver.quit()
内容的提问来源于stack exchange,提问作者Galdino84
相关产品推荐
相关产品推荐

