8

我使用Selenium WebDriver来测试我正在开发的Google Chrome扩展程序。我注意到,可以定制ChromeDriver以向其启动的Chrome实例添加扩展程序。这可以使用ChromeOptions类的AddExtensionAddExtensions方法来实现。如何使用解压后的扩展程序启动Chrome?

这些方法的文档表明它们需要扩展才能作为crx文件提供。由于我是开发扩展,我没有一个crx文件。我希望能够加载解压后的扩展,但我找不到一个方法来做到这一点。

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

我该怎么做?

+1

我不知道这是什么意思,但我提高了你的答案,因为它确实看起来像是有用的信息。 –

回答

13

我能够通过使用AddArgument方法直接将信息传递给Chrome来实现此目的。下面是它看起来像在C#:

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

硒文档中有这样的一个包装(不解压)扩展的例子:

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); 
+1

'addExtensions'似乎需要一个* crx *文件,它代表一个* packed *扩展名,而不是一个解压缩的文件。 – Sam

1

对于填料扩展(.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

+0

第二个选项只适用于本地Selenium,因为'/ path/to/extension'不能远程访问。 – Vladimir

1

的正在开发的扩展错误弹出了我,我请求删除其强制执行,组织策略中铬的限制。一旦限制被删除,我能够运行该程序没有任何错误。 ChromeBrowser-GPO-Deny - 这是被删除的那个。您可以检入设置 - 扩展 - 检查开发人员模式,并查看是否在删除限制后检查加载解压后的扩展。那你应该很好。以上所有条件仅适用于铬不受限制的情况。