如何在虚拟环境中运行无头Firefox(无需环境内安装)
解决Python虚拟环境中无头Firefox运行的版本兼容问题
核心问题
报错明确指出:geckodriver 0.29.0与Firefox 120.0.1版本不兼容,官方推荐Firefox 120.*搭配geckodriver 0.33.0,这是导致服务意外退出(状态码64)的根本原因。
解决步骤
1. 删除旧版本的geckodriver
先移除虚拟环境中已安装的旧版驱动:
rm /home/guilherme/programming/python/ct-ero/casa-venv/.virtualenv/bin/geckodriver
2. 安装兼容版本的geckodriver
有两种可行方式:
方式一:用webdrivermanager指定版本安装
直接指定需要的0.33.0版本,链接到虚拟环境bin目录:
webdrivermanager firefox:0.33.0 --linkpath .virtualenv/bin
方式二:手动下载安装(适配webdrivermanager异常场景)
- 下载对应Linux 64位的geckodriver包:
wget https://github.com/mozilla/geckodriver/releases/download/v0.33.0/geckodriver-v0.33.0-linux64.tar.gz - 解压文件:
tar -xvzf geckodriver-v0.33.0-linux64.tar.gz - 移动到虚拟环境bin目录并赋予执行权限:
mv geckodriver /home/guilherme/programming/python/ct-ero/casa-venv/.virtualenv/bin/ chmod +x /home/guilherme/programming/python/ct-ero/casa-venv/.virtualenv/bin/geckodriver
3. 验证版本并运行脚本
检查驱动版本是否正确:
geckodriver --version
输出显示geckodriver 0.33.0后,重新执行测试脚本:
python3 test.py
额外优化(可选)
如果想让Selenium自动管理驱动版本,可改用Selenium 4.x自带的驱动管理工具,无需手动维护webdrivermanager:
- 替换依赖包:
pip uninstall webdrivermanager pip install webdriver-manager
- 修改Python脚本:
from selenium import webdriver from selenium.webdriver.firefox.options import Options from selenium.webdriver.firefox.service import Service from webdriver_manager.firefox import GeckoDriverManager options = Options() options.add_argument("--headless") # 自动下载并匹配兼容版本的geckodriver driver = webdriver.Firefox(service=Service(GeckoDriverManager().install()), options=options) print("Firefox Headless Browser Invoked") driver.quit()
内容的提问来源于stack exchange,提问作者guilerme_coppola84
相关产品推荐
相关产品推荐

