15

Ich ging zu Chrome Extension Downloader, um die .crx-Datei für "Adblock-Plus_v1.4.1" zu finden.Ausführen von Selenium WebDriver mit Python mit Erweiterungen (.crx-Dateien)

Ich warf es in dem Verzeichnis im Arbeits in, und dann lief:

from selenium import webdriver 

chop = webdriver.ChromeOptions() 
chop.add_extension('Adblock-Plus_v1.4.1.crx') 
driver = webdriver.Chrome(chrome_options = chop) 

Es total erkennt an, dass es existiert, aber es gibt mir, was wie eine Nachricht ChromeDriver.exe Stil aussieht:

ERROR:extension_error_reporter.cc(56)] Extension error: Package is invalid: 'CRX_PUBLIC_KEY_INVALID'.

Dann schließlich eine WebDriver Ausnahme:

selenium.common.exceptions.WebDriverException: Message: u'Extension could not be installed'

Ich bin fast 100% sicher, dass an meinem Code nichts falsch ist, weil er zuerst eine Nachricht vom Typ ChromeDriver eingibt, bevor er die Ausnahme auslöst.

Ich versuchte auch versucht, indem Sie auf 'C:\Documents and Settings\\*UserName*\Local Settings\Application Data\Google\Chrome\User Data\Default\Extensions' auf chrome://extensions/ mit Entwicklermodus auf, es selbst zu packen, dass CRX zu verwenden, die erstellt wurde, und bekam die ich versuchte, genau die gleiche Fehlermeldung

auch eine andere Art und Weise:

chop = webdriver.ChromeOptions() 
chop.add_argument('--load_extension=Adblock-Plus_v1.4.1.crx') 
driver = webdriver.Chrome(chrome_options = chop) 

diese nicht eine Ausnahme oder sogar einen Chrome-Treiberfehler verursachen, aber wenn ich zu chrome://extensions/ tut es sagt, gehe von Hand, dass die Erweiterung geladen wird ...

Im mein Problem zu denken hat mit der eigentlichen .crx-Datei selbst zu tun. wegen der Art der Fehlermeldung ... aber dann zur gleichen Zeit, bin ich nicht sicher, denn wenn ich eine webdriver.Chrome() Sitzung spawn, und dann manuell gehen zu kann ich physisch Drag & Drop installieren Sie die gleiche .crx-Datei.

Edit: Ich erkannte ich den Ball hielt stellen tatsächlich eine Frage so ist es hier:

Was mache ich falsch? Warum kann ich diese Chrome-Erweiterung nicht laden? Ist es mein Code oder die .crx-Datei selbst?

UPDATE: @ Pat Meeker Ive versucht, dies aber im etwas in der Übersetzung von Java zu verlieren Python

capability = webdriver.DesiredCapabilities.CHROME einen Wörterbuch zurück, die alle meine Argumente i hat, so im ziemlich sicher, dass der einzigen Teil, i Sie müssen die Argumente hinzufügen.

options = webdriver.ChromeOptions() 
options.add_argument('--user-data-dir=C:/Users/USER_NAME/AppData/Local/Google/Chrome/User Data/Default/') 

Das ist, was ich jetzt habe, und wenn ich versuche zu driver = webdriver.Chrome(chrome_options=options) Chrom eröffnet, und es scheint, seine vorherige Position zu erinnern, aber nichts mehr, keine Lesezeichen, keine Erweiterungen gar nichts.

+1

Möchten Sie den Vorgang testen, die Erweiterung tatsächlich hinzuzufügen? Oder brauchst du nur die Erweiterung? Wenn Letzteres, Sie in der Lage sein sollten, manuell die Erweiterung (einmal) mit einem bestimmten Chrome-Benutzerprofil hinzufügen, und dann in Ihrem Test - richten Sie Ihren WebDriver mit diesem Profil, und die Erweiterung sollte da sein. Hier ist eine Antwort auf die Einrichtung des WebDriver mit einem Profil: http://StackOverflow.com/a/15270384/2386700 –

Antwort

17

Fügen Sie einfach diese zusätzliche Zeile in Ihrem Programm

from selenium.webdriver.chrome.options import Options es funktioniert ...

wie diese

from selenium import webdriver 
from selenium.webdriver.chrome.options import Options 

chop = webdriver.ChromeOptions() 
chop.add_extension('Adblock-Plus_v1.4.1.crx') 
driver = webdriver.Chrome(chrome_options = chop) 
+0

Wie kann ich das gleiche in Linux? –

0

Aus meiner dürftigen Erfahrung das Problem mit dem load-extesion Argument und nicht Ihre Code, da ich beim Testen einer Erweiterung, die nicht vom Chrome Web Store stammt, das gleiche Problem hatte. Ich habe es gelöst, indem Sie die Erweiterung mit Drag & Drop installieren und nur das Argument --user-data-dir verwenden.

Dies funktionierte für mich mit C# und Chrome 33, ich weiß, es klingt dünn, aber es funktioniert seit einigen Monaten für mich, also hoffe ich, dass es helfen wird.

Verwandte Themen