Python Selenium 4 - Firefox installAddon 不工作

Python Selenium 4 - Firefox installAddon not working

我已经升级到 selenium 4

new_addon_path = 'D:/GOOD/Coding/uBlock.xpi'
browser1 = selenium.webdriver.Firefox(options=opts, etc....)
browser1.install_addon(new_addon_path)

错误:

selenium.common.exceptions.WebDriverException: Message: Expected absolute path: [Exception... "Component returned failure code: 0x80520001 (NS_ERROR_FILE_UNRECOGNIZED_PATH) ..... 

文档:

https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md

文档说:

Changes to firefox.Driver .. Added installAddon(path)

C:/Users/User/AppData/Local/Temp/ 中自动创建了一个 临时配置文件 我想要这个临时配置文件,这样我就可以同时处理多个驱动程序会话,而无需手动创建和分配新配置文件。

可以使用 browser1.__dict__['capabilities']['moz:profile']

找到此临时配置文件

我尝试过的修复:

尝试将 uBlock.xpi 放入个人资料文件夹,然后调用 browser1.install_addon(path to profile/extensions/uBlock.xpi)

尝试将 uBlock.xpi 放在与 geckodriver.log

相同的文件夹中

所有路径都会失败,无论它们是相对路径还是绝对路径。

文档还说:

Changes to firefox.Options .. Added addExtensions

firefox.Options

中甚至没有作为选项存在

Message: Expected absolute path

此错误消息告诉您确切的问题。

install_addon() 需要 绝对路径 ,但您传递的是 相对路径 .

解决办法是使用绝对路径。

The documentation says

您指向的文档是针对 JavaScript 绑定的,但您的代码使用的是 Python 绑定。您正在阅读错误的文档。

github.com 的小伙子们解决了这个问题,

browser1.install_addon('D:/GOOD/Coding/uBlock.xpi')

应该看起来像:

browser1.install_addon(r'D:\GOOD\Coding\uBlock.xpi')

这个有效

我不确定为什么,因为 service() 函数或任何其他 python selenium 函数在 windows 带有黑斜杠。但是,此路径需要此公式。