无法在 python selenium 中加载 firefox 插件

Unable to load firefox Add ons in python selenium

我想在 selenium webdriver 运行s 时加载 Zenmate Firefox Addons 当我 运行 没有加载任何插件(扩展)但在添加任何插件时遇到问题时 运行 没问题。 这是我的代码:

def __init__(self):   

        self.main_catag_driver = []
        self.declare_xpaths()
        self.main_web_url = "Some_website_url"
        self.path_fire_fox_file = "~/.mozilla/firefox/7rl1aw4c.default/extensions/firefox@zenmate.com.xpi"
        self.driver = webdriver.Firefox()
        self.driver.add_extension(extension=self.path_fire_fox_file)
        time.sleep(5)
        self.driver.get(self.main_web_url)

加载栏时出错:

Traceback (most recent call last):
  File "scrap.py", line 73, in <module>
    obj = carandclassic()
  File "scrap.py", line 28, in __init__
    self.driver.add_extension(extension=self.path_fire_fox_file)
AttributeError: 'WebDriver' object has no attribute 'add_extension'

add_extension() is a method on FirefoxProfile,不是WebDriver

profile = webdriver.FirefoxProfile()
profile.add_extension(extension=self.path_fire_fox_file)

self.driver = webdriver.Firefox(profile)

另外,我不确定你是否真的需要那个 time.sleep(5) 电话 - 请尝试不要浪费 5 秒。

虽然我同意 alecxe, it only worked for some of my extensions. I managed to install all of them successfully (from .xpi files) with install_addon() 调用已经实例化 webdriver.Firefox:

driver = webdriver.Firefox(executable_path='path_to_geckodriver')
# Path to .xpi file needs to be an absolute path. I think it must be a string too.
driver.install_addon(str(Path('extensions/some_extension.xpi').absolute()))

driver.get("about:addons")  # One step closer to see all extensions at glance