2013-03-01 44 views
10

Tôi đã tìm kiếm cả ngày cho điều này và có vẻ như không có giải pháp hiện có sẵn từ việc thực hiện chromedriver cho python.Đặt chrome.prefs với python ràng buộc cho selen trong chromedriver

làm cách nào để bạn đặt chrome.prefs cụ thể (ví dụ: cài đặt hồ sơ ví dụ như profile.managed_default_content_settings.images = 2) bằng phương pháp webdriver.Chrome()?

Tôi đã thử qua webdriver.ChromeOptions() mà không thành công. Trong Java có các hàm thích hợp có sẵn để đạt được điều này.

Nhưng Python? Đây là những gì tôi hiện đang làm ...

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) 

Trả lời

3

Fix:

Có một giải pháp bằng cách tránh đối tượng các chromeoptions và quay trở lại vào từ điển desiredcapabilities (phản đối). Đối với một số lý do webdriver.py trong thư viện selen, thêm một từ điển chromeoptions trống vào từ điển mong muốn mà nó làm cho nó vô ích. Vì vậy, bạn cần phải bỏ ghi chú dòng 54 trong webdriver.py

desired_capabilities.update(options.to_capabilities()) 

Sau đó sử dụng mã này để vượt qua tất cả các khả năng mong muốn để 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

Vấn đề tương tự ở đây (Tôi đang cố gắng thay đổi thư mục tải xuống của Chrome). Đã thử mã của bạn, nhưng bằng cách nào đó nó không làm việc cho tôi. Dòng 'wish_capabilities.update (options.to_capabilities())' trên tệp webdriver.py của tôi không được nhận xét. Có suy nghĩ gì không? Bạn có gặp bất kỳ giải pháp nào khác không? – Parzival

+0

không, chỉ là vậy thôi. bạn đã tìm thấy dòng này? mong_capabilities.update (options.to_capabilities()) – Jabb

+0

Tôi đã làm. Nó không được bình luận, vì vậy nó phải có tác dụng, nhưng bằng cách nào đó nó đã không. Cuối cùng tôi đã từ bỏ Chrome hoàn toàn. – Parzival

3

Chỉ cần một cập nhật nhỏ cho tất cả mọi người khác vấp phải câu hỏi này.

Đối với các phiên bản mới hơn đoạn mã sau hoạt động mà không vấn đề:

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

Đối với bất cứ ai muốn vô hiệu hóa hình ảnh trong chromedriver, mã sau đây có thể giúp bạn.

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

Đây là những gì làm việc với các phiên bản mới nhất chromedriver từ ít nhất 2,15 lên phiên bản hiện tại 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

Đối với bất cứ ai đang gặp khó khăn với cú pháp Python, đây là một hoàn thành, làm việc ví dụ. Nó tắt Chrome "Bạn có muốn Google Chrome lưu mật khẩu của bạn cho trang web này không?" lời nhắc. Xem thêm 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')