【问题标题】:Python Selenium 4 - Firefox installAddon not workingPython Selenium 4 - Firefox installAddon 不工作
【发布时间】:2020-02-09 17:50:24
【问题描述】:

我已经升级到 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

文档说:

对 firefox.Driver 的更改 .. 添加了 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.xpigeckodriver.log 放在同一文件夹中

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

文档还说:

对 firefox.Options 的更改 .. 添加了 addExtensions

firefox.Options 中甚至不作为选项存在

【问题讨论】:

    标签: python-3.x selenium geckodriver selenium-firefoxdriver


    【解决方案1】:

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

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

    应该看起来像:

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

    这行得通

    我不知道为什么,因为 service() 函数或任何其他 python selenium 函数在带有黑斜线的 windows 上运行良好。然而,这条路径需要这个公式。

    【讨论】:

    • 关于你的最后一段——服务路径由 Selenium 代码处理,而插件路径被传递给 geckodriver,它可能会以不同的方式处理路径。
    【解决方案2】:

    Message: Expected absolute path

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

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

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

    文档说

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

    【讨论】:

    • 它是关于 selenium 最新版本的唯一文档。而且我正在使用完整路径......正如我在帖子末尾提到的那样。我使用的路径是:D:/Coding/Selenium_Test/firefox/firefox_exe/uBlock.xpi ...这不是绝对路径吗?
    • 您的示例代码清楚地表明您使用的是相对路径,而不是您评论中的路径。您为什么要发布一个应该失败的示例,然后在 cmets 中声明您实际上并没有运行该代码?
    • 是的,但函数install_addon() 在python 中可供选择......只有函数没有用,因为它似乎被破坏了。我已将其提交给https://github.com/mozilla/geckodriver/issues ...也没有其他功能可以在不设置预定配置文件的情况下提供它所提供的功能
    • selenium 4 gecko 驱动程序更新还表明它们提供了更多避免强制配置文件分配的机会。这就是为什么我希望install_addon() 能够工作
    猜你喜欢
    • 1970-01-01
    • 2017-02-26
    • 2011-07-21
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 2020-07-18
    相关资源
    最近更新 更多