Установите chrome.prefs с привязкой python для селена в chromedriver

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

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

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

Но Питон? Это то, чем я занимаюсь в настоящее время...

    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)

person Jabb    schedule 01.03.2013    source источник


Ответы (5)


Для тех, кто хочет отключить изображения в 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)
person Xiong    schedule 16.01.2015

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

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

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

Это то, что работает с последними версиями 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")
person Community    schedule 08.12.2015

Исправить:

Существует решение, позволяющее избежать объекта chromeoptions и вернуться к словарю желаемых возможностей (устарело). По какой-то причине webdriver.py в библиотеке селена добавляет пустой словарь chromeoptions в словарь желаемых возможностей, что делает его бесполезным. Итак, вам нужно раскомментировать строку 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)
person Jabb    schedule 20.03.2013
comment
Аналогичная проблема здесь (я пытаюсь изменить папку загрузки Chrome). Попробовал ваш код, но у меня почему-то не работает. Строка desired_capabilities.update(options.to_capabilities()) в моем файле webdriver.py не была закомментирована. Есть предположения? Сталкивались ли вы с другими решениями? - person Parzival; 03.08.2013
comment
нет, это было именно так. вы нашли эту строчку? требуемые_возможности.обновление(options.to_capabilities()) - person Jabb; 26.08.2013
comment
Я сделал. Он не был закомментирован, поэтому он должен был сработать, но почему-то не сработал. В итоге я вообще отказался от Хрома. - person Parzival; 26.08.2013
comment
Спасибо! Если caps['chromeOptions'] существует, caps['chrome.prefs'] будет игнорироваться. Подкласс ChromeOptions и переопределение to_capabilities заставят его работать. - person youfu; 06.02.2014
comment
@zhangyoufu точно! это способ добиться этого! - person Jabb; 06.02.2014

Для тех, кто борется с синтаксисом Python, вот полный рабочий пример. Он отключает Chrome «Хотите ли вы, чтобы Google Chrome сохранил ваш пароль для этого сайта?» быстрый. См. также WebDriver Браузер Chrome: избегайте всплывающего окна «Хотите, чтобы Chrome сохранил ваш пароль».

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')
person Steve Saporta    schedule 23.03.2017