Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I launch Chrome with an unpacked extension?

I'm using Selenium WebDriver to test a Google Chrome extension I'm developing. I noticed that ChromeDriver can be customised to add extensions to the instance of Chrome that it launches. This can be achieved using the AddExtension and AddExtensions methods of the ChromeOptions class.

The documentation for these methods indicates that they require extensions to be provided as crx files. Since I'm developing the extension, I don't have a crx file. I would like to be able to load the unpacked extension, but I couldn't find a method to do this.

I tried putting the extension files in a zip file and specifying this for the AddExtension method, but this caused an exception to occur since it wasn't a crx file. I also tried passing in the directory containing the unpacked files, but this produced a FileNotFoundException.

How can I do this?

like image 920
Sam Avatar asked Sep 25 '13 00:09

Sam


People also ask

What does Load unpacked mean in extensions?

Chrome extensions can be either packed or unpacked. Packed extensions are a single file with a . crx extension. Unpacked extensions are a directory containing the extension, including a manifest. json file.


2 Answers

I was able to achieve this by using the AddArgument method to directly pass the information to Chrome. Here's what it looks like in C#:

options = new ChromeOptions();
options.AddArgument("--load-extension=" + unpackedExtensionPath);
like image 56
Sam Avatar answered Sep 27 '22 22:09

Sam


For packed extensions (a .crx file)

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

For unpacked extensions (a local folder)

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

like image 23
rednoyz Avatar answered Sep 28 '22 00:09

rednoyz