Establecer chrome.prefs con enlace de python para selenium en chromedriver

He estado buscando todo el día para esto y parece que no hay una solución actualmente disponible desde la implementación de Chromedriver para python.

¿Cómo configura chrome.prefs específico (por ejemplo, configuraciones de perfil como profile.managed_default_content_settings.images = 2) usando el método webdriver.Chrome ()?

Ya lo probé a través de webdriver.ChromeOptions () sin éxito. En Java hay funciones apropiadas disponibles para lograrlo.

Pero Python? Esto es lo que estoy haciendo actualmente …

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) 

Para cualquier persona que quiera deshabilitar imágenes en chromedriver, el siguiente código podría ayudarlo.

 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) 

Solo una pequeña actualización para todos los demás que se tropiezan con esta pregunta.

Para las versiones más recientes, el siguiente código funciona sin problemas:

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

Esto es lo que funciona con las últimas versiones de chromedriver de al menos 2.15 a la versión actual 2.20:

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

Fijar:

Existe una solución al evitar el objeto Chromeoptions y volver al diccionario de capacidades deseado (en desuso). Por alguna razón, webdriver.py en la biblioteca de selenium agrega un diccionario de Chromeoptions vacío al diccionario de capacidades deseadas que lo hace inútil. Así que necesitas descomentar la línea 54 en webdriver.py

 desired_capabilities.update(options.to_capabilities()) 

Luego usa este código para pasar todas las capacidades deseadas a chromedriver

 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) 

Para cualquiera que tenga problemas con la syntax de Python, aquí hay un ejemplo completo y funcional. Desactiva la opción de Chrome: “¿Desea que Google Chrome guarde su contraseña para este sitio?” rápido. Vea también WebDriver Chrome Browser: Evite “¿Desea que Chrome guarde su contraseña?” .

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