我正在使用Selenium WebDriver来测试我正在开发的Google Chrome扩展程序。我注意到ChromeDriver
可以自定义,以便为其启动的Chrome实例添加扩展程序。这可以使用AddExtension
类的AddExtensions
和ChromeOptions
方法来实现。
这些方法的文档表明它们需要将扩展名作为crx文件提供。由于我开发扩展,我没有crx文件。我希望能够加载解压扩展,但我找不到一个方法来执行此操作。
我尝试将扩展文件放在zip文件中,并为AddExtension
方法指定此项,但这会导致异常,因为它不是crx文件。我也试过传递包含解压缩文件的目录,但这产生了FileNotFoundException
。
我该怎么做?
答案 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);
答案 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);