2015-01-21 3 views
24

Я провожу много времени на поиск этого. В конце дня я собрал несколько ответов, и он работает. Я разделяю свой ответ, и я буду признателен, если кто-нибудь отредактирует его или предоставит нам более простой способ сделать это.Python: отключить изображения в Selenium Google ChromeDriver

1- Ответ в Disable images in Selenium Google ChromeDriver работает на Java. Таким образом, мы должны делать то же самое в Python:

opt = webdriver.ChromeOptions() 
opt.add_extension("Block-image_v1.1.crx") 
browser = webdriver.Chrome(chrome_options=opt) 

2- Но скачивании «Block-image_v1.1.crx» немного сложнее, потому что не существует прямой способ сделать это. Для этой цели вместо: https://chrome.google.com/webstore/detail/block-image/pehaalcefcjfccdpbckoablngfkfgfgj

вы можете перейти на http://chrome-extension-downloader.com/ и вставить URL-адрес расширения, чтобы иметь возможность загрузить файл расширения.

3- Тогда вы сможете использовать вышеупомянутый код с указанием пути к файлу расширения, который вы загрузили.

ответ

44

Спасибо. Вот еще один способ отключить изображения,

chromeOptions = webdriver.ChromeOptions() 
prefs = {"profile.managed_default_content_settings.images":2} 
chromeOptions.add_experimental_option("prefs",prefs) 
driver = webdriver.Chrome(chrome_options=chromeOptions) 

Я нашел его ниже:

http://nullege.com/codes/show/[email protected]@[email protected]@fbstalker1.py/56/selenium.webdriver.ChromeOptions.add_experimental_option

+0

Это работает, спасибо. –

0

Существует еще один способ, который приходит, вероятно, на ум каждый, чтобы получить доступ к chrome://settings, а затем пройти через настройку с селеном я начал этот путь только для дидактического любопытства, но затем я ударил лес из теневых элементов теперь, когда вы сталкиваетесь с более чем тремя теневыми корневыми элементами в сочетании с динамическим контентом, - это, очевидно, способ обфускации и сделать невозможным автоматизацию, ALTH может показаться, по крайней мере теоретически возможным, этот подход больше походит на тупик, я оставлю этот ответ с примером кода, просто для чисто учебных целей, чтобы рекламировать людей, соблазненных пойти на вызов.. Не только было трудно найти только настройки контента из-за теневых и динамических изменений, когда вы обнаружите, что кнопка не может быть нажата на данный момент.

driver = webdriver.Chrome() 


def expand_shadow_element(element): 
    shadow_root = driver.execute_script('return arguments[0].shadowRoot', element) 
    return shadow_root 

driver.get("chrome://settings") 
root1 = driver.find_element_by_tag_name('settings-ui') 
shadow_root1 = expand_shadow_element(root1) 

root2 = shadow_root1.find_element_by_css_selector('[page-name="Settings"]') 
shadow_root2 = expand_shadow_element(root2) 

root3 = shadow_root2.find_element_by_id('search') 
shadow_root3 = expand_shadow_element(root3) 

search_button = shadow_root3.find_element_by_id("searchTerm") 
search_button.click() 

text_area = shadow_root3.find_element_by_id('searchInput') 
text_area.send_keys("content settings") 

root0 = shadow_root1.find_element_by_id('main') 
shadow_root0_s = expand_shadow_element(root0) 


root1_p = shadow_root0_s.find_element_by_css_selector('settings-basic-page') 
shadow_root1_p = expand_shadow_element(root1_p) 


root1_s = shadow_root1_p.find_element_by_css_selector('settings-privacy-page') 
shadow_root1_s = expand_shadow_element(root1_s) 

content_settings_div = shadow_root1_s.find_element_by_css_selector('#site-settings-subpage-trigger') 
content_settings = content_settings_div.find_element_by_css_selector("button") 
content_settings.click() 
Смежные вопросы