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

Ubuntu VPS上配置Selenium与Geckodriver适配Python遇问题求助

Ubuntu VPS上配置Selenium+Geckodriver遇到的问题

当前环境配置

  • Selenium版本:4.17.2
  • Firefox版本:122.0
  • Geckodriver版本:0.34.0
  • Python版本:3.8.10
  • Ubuntu版本:20.04.5 LTS

操作步骤

  1. 安装必要依赖包
sudo apt-get update
sudo apt-get install firefox
pip install selenium
tar -xvzf geckodriver-v0.34.0-linux64.tar.gz
chmod +x geckodriver
sudo mv geckodriver /usr/local/bin/

(注:最后一步将geckodriver加入系统PATH)

  1. 验证安装
firefox --version
./geckodriver --version
pip show selenium
  1. 执行测试脚本
from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.headless = True
driver = webdriver.Firefox(options=options)
driver = webdriver.Firefox()
driver.get("https://www.example.com")
print(driver.title)
driver.quit()

报错信息

该脚本在本地Windows机器运行正常,但在Ubuntu VPS无头模式下返回以下错误:

Traceback (most recent call last):
  File "test.py", line 6, in <module>
    driver = webdriver.Firefox(options=options)
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/firefox/webdriver.py", line 69, in __init__
    super().__init__(command_executor=executor, options=options)  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py", line 208, in __init__
    self.start_session(capabilities)
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py", line 292, in start_session
    response = self.execute(Command.NEW_SESSION, caps)["value"]
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py", line 347, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status 1

问题排查与解决方法

1. 修复测试脚本的明显错误

脚本里连续初始化两次webdriver.Firefox(),会创建两个浏览器实例并引发资源冲突,同时Selenium 4+推荐用add_argument方式设置无头参数。修改后的脚本:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.add_argument("--headless")
options.add_argument("--no-sandbox")  # 解决VPS沙箱限制
options.add_argument("--disable-dev-shm-usage")  # 避免临时空间不足
options.add_argument("--disable-gpu")  # 无头模式下禁用GPU加速

driver = webdriver.Firefox(options=options)
driver.get("https://www.example.com")
print(driver.title)
driver.quit()

2. 补充Firefox图形依赖

Ubuntu服务器版默认缺少Firefox运行所需的图形依赖,执行以下命令安装:

sudo apt-get install -y xvfb libgtk-3-0 libdbus-glib-1-2 libxt6

若仍无法启动,可通过xvfb模拟显示环境运行脚本:

xvfb-run python test.py

3. 确认Geckodriver完整性

重新下载并替换Geckodriver,避免文件损坏:

wget https://github.com/mozilla/geckodriver/releases/download/v0.34.0/geckodriver-v0.34.0-linux64.tar.gz
tar -xvzf geckodriver-v0.34.0-linux64.tar.gz
chmod +x geckodriver
sudo mv -f geckodriver /usr/local/bin/

4. 检查权限与PATH配置

确认Geckodriver权限正确:

ls -l /usr/local/bin/geckodriver

输出需包含-rwxr-xr-x权限;同时检查PATH是否包含目标目录:

echo $PATH | grep /usr/local/bin

5. 查看Firefox启动日志

直接在VPS上启动Firefox无头模式,获取具体错误信息:

firefox --headless --no-sandbox --disable-dev-shm-usage https://www.example.com

根据终端输出的依赖缺失或配置提示针对性修复。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:15:01