8

Używam Selenium WebDriver do testowania rozwijanego rozszerzenia Google Chrome. Zauważyłem, że ChromeDriver można dostosować, dodając rozszerzenia do uruchamianej przez niego przeglądarki Chrome. Można to osiągnąć za pomocą metod klasy AddExtension i AddExtensions.Jak mogę uruchomić Chrome z rozpakowanym rozszerzeniem?

Dokumentacja tych metod wskazuje, że wymagają rozszerzenia jako pliki CRX. Od jestem rozwijając rozszerzenie, nie mam pliku CRX. Chciałbym móc załadować rozpakowane rozszerzenie, ale nie mogłem znaleźć metody, aby to zrobić.

Próbowałem umieścić pliki rozszerzeń w pliku zip i określając to dla metody AddExtension, ale spowodowało to wyjątek, ponieważ nie był to plik CRX. Próbowałem również przekazać w katalogu zawierającym rozpakowane pliki, ale wyprodukowało to FileNotFoundException.

Jak mogę to zrobić?

+1

Nie mam pojęcia, co to wszystko oznacza, ale przegłosowałem twoją odpowiedź, ponieważ rzeczywiście wydaje się przydatną informacją. –

Odpowiedz

13

Udało mi się to osiągnąć, używając metody AddArgument do bezpośredniego przekazywania informacji do Chrome. Oto jak to wygląda w C#:

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

Dokumentacja Selen ma przykład takiego dla zapakowany (nie rozpakowany) Rozszerzenie:

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' wydaje się wymagać pliku * crx *, który reprezentuje * spakowane * rozszerzenie zamiast rozpakowanego. – Sam

1

Dla rozszerzeń spakowanych (a crx plik)

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

Dla rozpakowanych rozszerzeń (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

+0

Druga opcja działa tylko dla lokalnego Selenium, ponieważ '/ path/to/extension' nie będzie dostępny zdalnie. – Vladimir

1

niespakowanego błąd rozszerzenie pojawiło się dla mnie i poprosiłem o usunięcie ograniczeń w Chrome, który został wykonany jako polityki organizacyjnej. Po usunięciu ograniczeń mogę uruchomić program bez żadnych błędów. ChromeBrowser-GPO-Deny - to był ten, który został usunięty. Możesz sprawdzić Ustawienia - Rozszerzenia - Sprawdź tryb programisty i sprawdź, czy ładowanie rozpakowanych rozszerzeń jest sprawdzane po usunięciu ograniczeń. Powinieneś być dobry wtedy. Wszystkie powyższe będą działać tylko wtedy, gdy chrom nie jest ograniczony.

Powiązane problemy