2013-03-01 6 views
10

Я искал весь день для этого, и кажется, что в настоящее время нет решения, доступного из реализации chromedriver для python.Установите chrome.prefs с привязкой python для селена в chromedriver

Как установить определенные chrome.prefs (например, параметры профиля, такие как profile.managed_default_content_settings.images = 2) с помощью метода webdriver.Chrome()?

Я уже пробовал через webdriver.ChromeOptions() без успеха. В Java существуют соответствующие функции для достижения этого.

Но Python? Это то, что я делаю в данный момент ...

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) 

ответ

3

Fix:

Существует решение, избегая возражают chromeoptions и возвращаясь обратно в словарь desiredcapabilities (устаревшее). По какой-то причине webdriver.py в библиотеке selenium добавляет пустой словарь хромопций в словарь требуемых возможностей, который делает его бесполезным. Так что вам нужно раскомментировать линии 54 в webdriver.py

desired_capabilities.update(options.to_capabilities()) 

Затем используйте этот код, чтобы передать все желаемые возможности для 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) 
+0

Аналогичная проблема здесь (я пытаюсь изменить папку загрузки Chrome). Пробовал свой код, но почему-то это не работает для меня. Строка 'wish_capabilities.update (options.to_capabilities()) в моем файле webdriver.py не закомментировалась. Есть предположения? Вы сталкивались с любыми другими решениями? – Parzival

+0

Нет, это было именно так. вы нашли эту строку? wish_capabilities.update (options.to_capabilities()) – Jabb

+0

Я сделал. Он не был прокомментирован, поэтому он должен был сработать, но так или иначе этого не произошло. В конце концов я вообще отказался от Chrome. – Parzival

3

Просто небольшое обновления для всех остальных спотыкаясь этим вопросом.

Для более новых версий следующий код работает без проблем:

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

Для тех, кто хочет отключить изображения в chromedriver, следующий код может помочь вам.

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

Это то, что работает с последними версиями chromedriver от по меньшей мере 2,15 до текущей версии 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") 
1

Для тех, кто борется с синтаксисом Python, вот полный, рабочий пример. Это отключает Chrome: «Вы хотите, чтобы Google Chrome сохранил ваш пароль для этого сайта?» незамедлительный. См. Также 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') 

 Смежные вопросы

  • Нет связанных вопросов^_^