14

我正在使用 Selenium WebDriver 来测试我正在开发的 Google Chrome 扩展。我注意到ChromeDriver可以对其进行自定义以向它启动的 Chrome 实例添加扩展。这可以使用类的AddExtensionAddExtensions方法来实现ChromeOptions

这些方法的文档表明它们需要以 crx 文件的形式提供扩展。由于我正在开发扩展,我没有 crx 文件。我希望能够加载解压后的扩展,但我找不到执行此操作的方法。

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

我怎样才能做到这一点?

4

7 回答 7

17

我能够通过使用AddArgument直接将信息传递给 Chrome 的方法来实现这一点。这是它在 C# 中的样子:

options = new ChromeOptions();
options.AddArgument("--load-extension=" + unpackedExtensionPath);
于 2013-09-25T00:58:42.530 回答
3

对于打包扩展(一个 .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);

资源

于 2016-11-15T10:34:31.647 回答
2

可能为时已晚,但对于未来的用户:

https://sites.google.com/a/chromium.org/chromedriver/extensions

于 2014-08-12T00:32:28.280 回答
1

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

于 2017-04-14T18:45:28.863 回答
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")

于 2020-04-29T08:46:10.147 回答
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")
于 2020-11-30T13:04:36.480 回答
-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);
于 2014-01-20T22:59:09.940 回答