Python - 安装了扩展的远程Webdriver

时间:2014-02-18 09:45:39

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

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

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

2 个答案:

答案 0 :(得分:2)

对于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())

答案 1 :(得分:0)

如果您使用caps.update,则

E.Z.'s answer for 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)