2013-03-01 8 views
10

Ich habe den ganzen Tag nach diesem gesucht und es scheint, dass es derzeit keine Lösung von der Chromedriver-Implementierung für Python gibt.Set chrome.prefs mit Pythonbindung für Selen in chromedriver

Wie legen Sie bestimmte chrome.prefs (zum Beispiel Profileinstellungen wie profile.managed_default_content_settings.images = 2) mit der Methode webdriver.Chrome() fest?

Ich habe es bereits über webdriver.ChromeOptions() ohne Erfolg versucht. In Java stehen dazu entsprechende Funktionen zur Verfügung.

Aber Python? Das ist, was ich derzeit tue ...

options = webdriver.ChromeOptions() 
    options.add_argument('--allow-running-insecure-content') 
    options.add_argument('--disable-web-security') 
    options.add_argument('--disk-cache-dir=/var/www/cake2.2.4/app/tmp/cache/selenium-chrome-cache') 
    options.add_argument('--no-referrers') 
    options.add_argument('--window-size=1003,719') 
    options.add_argument('--proxy-server=localhost:8118') 
    options.add_argument("'chrome.prefs': {'profile.managed_default_content_settings.images': 2}") 


    self.selenium = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver',chrome_options=options) 

Antwort

3

Fix:

Es wurde eine Lösung durch die Vermeidung der chromeoptions ist Objekt und zurück zum desiredcapabilities Wörterbuch (veraltet) zurückkehrt. Aus irgendeinem Grund fügt webdriver.py in der selen-Bibliothek dem Wörterbuch der gewünschten Fähigkeiten ein leeres chromeoptions-Wörterbuch hinzu, das es unbrauchbar macht. Sie müssen also uncomment Linie 54 in webdriver.py

desired_capabilities.update(options.to_capabilities()) 

Dann diesen Code verwenden, um alle gewünschten Funktionen zu übergeben

CHROME = { 
"browserName": "chrome", 
     "version": "", 
     "platform": "ANY", 
     "javascriptEnabled": True, 
     "chrome.prefs": {"profile.managed_default_content_settings.images": 2}, 
     "proxy": { 
      "httpProxy":"localhost:8118", 
      "ftpProxy":None, 
      "sslProxy":None, 
      "noProxy":None, 
      "proxyType":"MANUAL", 
      "class":"org.openqa.selenium.Proxy", 
      "autodetect":False 
      }, 
     "chrome.switches": ["window-size=1003,719", "allow-running-insecure-content", "disable-web-security", "disk-cache-dir=/var/www/cake2.2.4/app/tmp/cache/selenium-chrome-cache", "no-referrers"], 
     } 


    self.selenium = webdriver.Chrome(desired_capabilities=CHROME) 
+0

Ähnliches Problem hier (Ich versuche, Chrome Download-Ordner zu ändern). Habe deinen Code versucht, aber irgendwie funktioniert es nicht für mich. Die Zeile "sined_capabilities.update (options.to_capabilities())" in meiner Datei webdriver.py wurde nicht auskommentiert. Irgendwelche Gedanken? Sind Sie auf andere Lösungen gestoßen? – Parzival

+0

Nein, es war genau das. Hast du diese Linie gefunden? sayed_capabilities.update (options.to_capabilities()) – Jabb

+0

tat ich. Es war nicht auskommentiert, also hätte es funktionieren sollen, aber irgendwie nicht. Am Ende habe ich Chrome ganz aufgegeben. – Parzival

3

Nur ein kleines Update chromedriver für alle anderen über diese Frage zu stolpern.

Für neuere Versionen der folgende Code funktioniert ohne Probleme:

options.add_experimental_option('prefs', {'download.default_directory':'C:\\temp'}) 
4

Für alle, die Bilder in chromedriver deaktivieren möchten, der folgende Code könnte Ihnen helfen.

from selenium.webdriver.chrome.options import Options 
chrome_options = Options() 
chrome_options.add_experimental_option("prefs", {'profile.default_content_settings.images': 2}) 
driver = webdriver.Chrome(chrome_options=chrome_options) 
4

Dies ist, was mit den neuesten chromedriver Versionen von mindestens 2,15 auf die aktuelle Version 2.20 funktioniert:

chrome_options = Options() 
chrome_options.add_experimental_option("prefs", {'profile.managed_default_content_settings.images': 2}) 
chrome = webdriver.Chrome('/path/to/chromedriver',chrome_options=chrome_options) 
chrome.get("https://google.com") 
1

Für alle kämpfen mit der Python-Syntax, hier ist ein komplettes, funktionierendes Beispiel. Es deaktiviert Chrome "Möchten Sie, dass Google Chrome Ihr Passwort für diese Site speichert?" prompt. Siehe auch WebDriver Chrome Browser: Avoid 'Do you want chrome to save your password' pop up.

from selenium import webdriver 
from selenium.webdriver.chrome.options import Options 
chrome_options = Options() 
chrome_options.add_experimental_option('prefs', { 
    'credentials_enable_service': False, 
    'profile': { 
     'password_manager_enabled': False 
    } 
}) 
driver = webdriver.Chrome(chrome_options=chrome_options) 
driver.get('https://google.com') 
Verwandte Themen