13

我整天都在寻找这个,似乎目前没有可用的解决方案可以从 python 的 chromedriver 实现中获得。

如何使用 webdriver.Chrome() 方法设置特定的 chrome.prefs(例如 profile.managed_default_content_settings.images = 2 等配置文件设置)?

我已经通过 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)
4

5 回答 5

9

对于任何想要在 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)
于 2015-01-16T13:21:04.823 回答
6

对于遇到这个问题的其他人来说,这只是一个小更新。

对于较新的版本,以下代码可以正常工作:

options.add_experimental_option('prefs', {'download.default_directory':'C:\\temp'})
于 2014-04-11T06:49:35.060 回答
4

这适用于从至少 2.15 到当前版本 2.20 的最新 chromedriver 版本:

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")
于 2015-12-08T10:06:50.290 回答
3

使固定:

有一个解决方案是避免使用 chromeoptions 对象并恢复到所需的功能字典(已弃用)。出于某种原因,selenium 库中的 webdriver.py 将一个空的 chromeoptions 字典添加到了 desiredcapabilities 字典中,这使其无用。所以你需要在 webdriver.py 中取消注释第 54 行

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)
于 2013-03-20T00:25:53.253 回答
2

对于任何在 Python 语法中苦苦挣扎的人,这里有一个完整的工作示例。它会禁用 Chrome 的“您希望 Google Chrome 保存此站点的密码吗?” 迅速的。另请参阅WebDriver Chrome 浏览器:避免弹出 'Do you want chrome to save your password'

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')
于 2017-03-23T19:19:21.260 回答