【问题标题】:Python - Remote Webdriver with Extension installed in itPython - 安装了扩展的远程 Webdriver
【发布时间】:2014-03-17 23:16:14
【问题描述】:

我想使用BrowserStack 在不同的浏览器版本上测试一个扩展程序。 这是一个返回具有指定功能的驱动程序的函数。 我的本地机器上有一个用于 Chrome 的 .crx file 和一个用于 Firefox 的 .xpi file。 我想使用 Remote Webdriver 并使用 Python 安装相应的扩展。

def my_webdriver(browser, browser_version, os, os_version):
    caps = {}
    caps["browser"] = browser
    caps["browser_version"] = browser_version
    caps["os"] = os
    caps["os_version"] = os_version
    caps["browserstack.debug"] = "true"
    driver = webdriver.Remote(
    ¦   command_executor = 'blahblahblah',
    ¦   desired_capabilities = caps)
    driver.maximize_window()
    return driver

【问题讨论】:

    标签: python selenium selenium-webdriver automated-tests remotewebdriver


    【解决方案1】:

    对于 Firefox,您需要创建一个配置文件并使用 add_extension 添加您的扩展程序。然后将配置文件传递给 WebDriver 构造函数:

    from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver
    selenium.webdriver.firefox.firefox_profile import FirefoxProfile
    ...
    fp = FirefoxProfile()
    fp.add_extension('/path/to/your/extension.xpi')
    driver = RemoteWebDriver(..., browser_profile=fp)
    

    或者,您可以提前创建一个 Firefox 配置文件,然后手动将您的扩展添加到其中。稍后您将其路径作为参数传递给FirefoxProfile()

    fp = FirefoxProfile('/path/to/your/profile')
    

    对于 Chrome,请使用 ChromeOptions:

    from selenium.webdriver.chrome.options import Options as ChromeOptions
    chrome_options = ChromeOptions()
    chrome_options.add_extension('/path/to/your/extension.crx')
    driver = RemoteWebDriver(..., desired_capabilities = caps + chrome_options.to_capabilities())
    

    【讨论】:

    • 当我用 Chrome 尝试它时,我得到这个异常:TypeError: unsupported operand type(s) for +: 'dict' and 'dict' when running desired_capabilities=caps + chrome_options.to_capabilities()
    【解决方案2】:

    E.Z.'s answer 如果您使用caps.update,则适用于 chrome:

    from selenium.webdriver.chrome.options import Options as ChromeOptions
    chrome_options = ChromeOptions()
    chrome_options.add_extension('/path/to/your/extension.crx')
    caps.update(chrome_options.to_capabilities())
    driver = RemoteWebDriver(..., desired_capabilities=caps)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 2016-05-03
      • 2022-12-18
      • 1970-01-01
      • 2021-06-19
      • 2018-06-10
      • 1970-01-01
      相关资源
      最近更新 更多