Termux Ubuntu下Selenium调用Firefox报geckodriver状态码-4错误
问题根因
- 弃用警告属于Selenium版本迭代后的语法不兼容:Selenium 4及以上版本废弃了直接在
webdriver.Firefox()中传入executable_path参数的写法,要求通过Service类传递驱动路径,该警告不会直接导致程序崩溃。 - 核心报错(geckodriver退出状态码-4)是Termux Ubuntu环境的特有问题,触发原因包含三类:一是未安装Firefox浏览器本体,geckodriver仅为驱动程序,依赖浏览器本体运行;二是下载的geckodriver架构与设备不匹配、缺少可执行权限;三是Termux无图形界面,未配置无头模式导致浏览器启动失败,另外proot环境缺少部分运行依赖也会触发该错误。
解决步骤
- 安装核心依赖与Firefox本体
执行以下命令更新源并安装必要组件:
apt update && apt upgrade -y apt install firefox libglib2.0-0 libnss3 libx11-6 -y
- 校验geckodriver配置
- 确认下载的geckodriver版本匹配设备架构:ARM64架构手机选择
linux-aarch64构建包,x86架构设备选择linux64构建包,不可跨架构使用。 - 给geckodriver添加可执行权限:
- 确认下载的geckodriver版本匹配设备架构:ARM64架构手机选择
chmod +x /root/firefox_driver/geckodriver
- 可选操作:将geckodriver移动到系统PATH目录实现全局调用,避免路径错误:
mv /root/firefox_driver/geckodriver /usr/local/bin/
- 修正测试代码
按照Selenium新版语法要求传入Service对象,同时添加无头运行参数适配Termux无图形界面的环境,参考代码如下:
from selenium import webdriver from selenium.webdriver.firefox.service import Service # 初始化驱动服务 service = Service(executable_path='/root/firefox_driver/geckodriver') # 配置浏览器启动参数 options = webdriver.FirefoxOptions() options.add_argument('--headless') # 无头模式,无图形界面必加 options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') # 初始化浏览器实例 driver = webdriver.Firefox(service=service, options=options) # 功能测试 driver.get('https://www.baidu.com') print(driver.title) driver.quit()
运行修正后的代码即可正常启动Selenium自动化程序。
内容的提问来源于stack exchange,提问作者Super mix
相关产品推荐
相关产品推荐

