如何使用解压扩展程序启动Chrome?

时间:2013-09-25 00:58:43

标签: google-chrome selenium google-chrome-extension selenium-webdriver

我正在使用Selenium WebDriver来测试我正在开发的Google Chrome扩展程序。我注意到ChromeDriver可以自定义,以便为其启动的Chrome实例添加扩展程序。这可以使用AddExtension类的AddExtensionsChromeOptions方法来实现。

这些方法的文档表明它们需要将扩展​​名作为crx文件提供。由于开发扩展,我没有crx文件。我希望能够加载解压扩展,但我找不到一个方法来执行此操作。

我尝试将扩展文件放在zip文件中,并为AddExtension方法指定此项,但这会导致异常,因为它不是crx文件。我也试过传递包含解压缩文件的目录,但这产生了FileNotFoundException

我该怎么做?

7 个答案:

答案 0 :(得分:15)

我可以使用AddArgument方法直接将信息传递给Chrome,从而实现这一目标。这是它在C#中的样子:

options = new ChromeOptions();
options.AddArgument("--load-extension=" + unpackedExtensionPath);

答案 1 :(得分:2)

答案 2 :(得分:2)

对于打包扩展名(.crx文件)

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

对于解压缩的扩展程序(文件夹)

ChromeOptions options = new ChromeOptions();
options.addArguments("load-extension=/path/to/extension");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

source

答案 3 :(得分:1)

为我弹出了解压缩的扩展程序错误,我请求删除chrome中作为组织策略强制执行的限制。删除限制后,我可以运行程序而不会出现任何错误。 ChromeBrowser-GPO-Deny - 这是被删除的那个。您可以签入设置 - 扩展 - 检查开发人员模式,并在删除限制后查看是否检查了加载解压扩展。你应该好的。以上所有内容仅在铬不受限制时才有效。

答案 4 :(得分:0)

在Python3中,可以这样完成:

from selenium.webdriver import Chrome, ChromeOptions

options = ChromeOptions()
options.add_argument("load-extension=/path/to/unpacked_ext")

driver = Chrome("/path/to/chromedriver", options=options)

# (optional) Look at the uploaded extension
driver.get("chrome://extensions")

答案 5 :(得分:0)

这是一个python示例,使用webdriver_manager

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager


options = webdriver.ChromeOptions()
# loading the extension Edit-This-Cookie
options.add_argument("--load-extension=./Edit-This-Cookie")
driver = webdriver.Chrome(ChromeDriverManager().install(), chrome_options=options)

driver.get("https://google.com")

答案 6 :(得分:-1)

对于打包(未解包)扩展名,Selenium文档有一个这样的示例:

capabilities.setCapability("platform", "Windows 8" );
capabilities.setCapability("version", "10");
capabilities.setCapability("name", testname);
capabilities.setCapability("screen-resolution", "1280x1024");
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
if (isLocal) driver = new ChromeDriver(capabilities);