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

使用Python Selenium加载Firefox扩展时遇AddonFormatError问题求助

我之前也踩过这个AddonFormatError的坑,结合你给出的代码和版本信息,给你几个实打实的排查和解决思路:

1. 先确认你的XPI扩展本身没问题

错误提示找不到install.rdf,首先得排查扩展文件是不是合法的。你可以把xxx.xpi改成.zip后缀解压,看看里面有没有install.rdf(老版Firefox扩展用这个)或者manifest.json(WebExtensions格式,Firefox 60已经支持)。如果文件损坏、不是标准Firefox扩展,Selenium肯定解析失败。

2. 修复Python路径的转义问题

你的代码里路径写的是"C:\Program Files (x86)\xxxxx\xxx.xpi",但Python里反斜杠是转义字符,这样写会导致路径解析错误,Selenium根本找不到你的扩展文件。改成两种写法都可以:

  • 用双反斜杠:"C:\\Program Files (x86)\\xxxxx\\xxx.xpi"
  • 用原始字符串(更省心):r"C:\Program Files (x86)\xxxxx\xxx.xpi"
    这个细节很容易忽略,但很多路径相关的错误都是因为它。

3. 换一种方式加载扩展,绕过FirefoxProfile的bug

Selenium 3.x之后支持直接通过Options加载扩展,不用绕FirefoxProfile,试试这种写法:

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

options = Options()
# 注意这里用原始字符串或者双反斜杠
options.add_extension(r"C:\Program Files (x86)\xxxxx\xxx.xpi")
browser = webdriver.Firefox(options=options, executable_path=r'xxx\geckodriver.exe')

这种方式有时候能避开Profile处理扩展时的兼容性问题。

4. 版本适配要精准,别盲目升级

你提到升级后没解决,可能是版本没对应对。Firefox 60正式版对应的GeckoDriver是v0.20.0(这个你是对的),但Selenium 3.12确实存在不少Firefox扩展相关的bug,建议升级到Selenium 3.141.0(这个版本是3.x系列的稳定版)。另外,确认你的Firefox是官方正式版,不是ESR或开发者分支,不同分支的扩展兼容逻辑有差异。

5. 排查临时目录的权限问题

错误里提到的临时路径是系统默认的临时文件夹,可能你的用户账号对这个目录没有读写权限?试试手动指定一个你有权限的临时目录给FirefoxProfile:

profile = webdriver.FirefoxProfile(temp_dir=r"C:\Your\Own\Temp\Folder")
profile.add_extension(r"C:\Program Files (x86)\xxxxx\xxx.xpi")
browser = webdriver.Firefox(profile, executable_path=r'xxx\geckodriver.exe')

这样能避开系统临时目录的权限限制。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:40:12