【问题标题】:Firefox Webdriver Install Addon to Remote WebdriverFirefox Webdriver 安装插件到远程 Webdriver
【发布时间】:2022-12-18 14:36:41
【问题描述】:
我有以下连接到远程 Webdriver 并安装扩展的代码
options = webdriver.FirefoxOptions()
options.set_preference('intl.accept_languages', 'en,en-US')
options.add_argument('--log-level=3') # Not logs will be displayed.
options.add_argument('--mute-audio') # Audio is muted.
options.add_argument('--enable-webgl-draft-extensions')
options.add_argument('--disable-infobars') # Disable popup
options.add_argument('--disable-popup-blocking') # and info bars.
profile = webdriver.FirefoxProfile()
profile.add_extension('/path/to/tampermonkey.xpi')
driver = webdriver.Remote("http://127.0.0.1:4445/wd/hub", options=options, browser_profile=profile)
但是当我进入浏览器时,从未安装过扩展程序。我误解了如何在 geckodriver 中安装扩展吗?
【问题讨论】:
标签:
python
selenium
selenium-webdriver
firefox
gecko
【解决方案1】:
对于 Firefox,您不应使用 add_extension,如 this issue 中所述:
当前支持的方法是在创建会话后在 firefox 驱动程序上添加 install_addon() 方法的扩展。
但是,install_addon 仅适用于本地网络驱动程序。如 this issue 中所述,使用远程网络驱动程序时需要一个简单的解决方法。
完整的代码应该如下所示:
from selenium import webdriver
options = webdriver.FirefoxOptions()
options.set_preference('intl.accept_languages', 'en,en-US')
options.add_argument('--log-level=3') # Not logs will be displayed.
options.add_argument('--mute-audio') # Audio is muted.
options.add_argument('--enable-webgl-draft-extensions')
options.add_argument('--disable-infobars') # Disable popup
options.add_argument('--disable-popup-blocking') # and info bars.
driver = webdriver.Remote("http://127.0.0.1:4445/wd/hub", options=options)
addon_id = webdriver.Firefox.install_addon(driver, "/path/to/tampermonkey.xpi")
# The add-on is installed
# and optionally uninstall the add-on by uncommenting the code below
# webdriver.Firefox.uninstall_addon(driver, addon_id)
我已经打开 a pull request 到 Selenium 文档来澄清这些用法。