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
操作步骤
- 安装必要依赖包
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)
- 验证安装
firefox --version
./geckodriver --version
pip show selenium
- 执行测试脚本
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
相关产品推荐
相关产品推荐

