2015-01-21 9 views
24

Ich verbringe viel Zeit damit, darüber zu suchen. Am Ende des Tages habe ich eine Reihe von Antworten kombiniert und es funktioniert. Ich teile meine Antwort und ich werde es schätzen, wenn jemand es bearbeitet oder uns einen einfacheren Weg gibt, dies zu tun.Python: Deaktivieren Sie Bilder in Selen Google ChromeDriver

1- Die Antwort in Disable images in Selenium Google ChromeDriver funktioniert in Java. Also sollten wir die gleiche Sache in Python tun:

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

2- Aber das Herunterladen „Block-image_v1.1.crx“ ist ein wenig kompliziert, weil es keinen direkten Weg, um das zu tun. Zu diesem Zweck statt zu: https://chrome.google.com/webstore/detail/block-image/pehaalcefcjfccdpbckoablngfkfgfgj

können Sie http://chrome-extension-downloader.com/ gehen und die Erweiterung URL einfügen dort der Lage sein, die Erweiterungsdatei zum Download bereit.

3- Dann können Sie den oben genannten Code mit dem Pfad zu der von Ihnen heruntergeladenen Erweiterungsdatei verwenden.

Antwort

44

Danke. Hier ist eine weitere Möglichkeit, Bilder zu deaktivieren,

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

ich es wie folgt zu finden:

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

+0

Das funktioniert, danke. –

0

Es gibt eine andere Art und Weise ist, die wahrscheinlich jedem in den Sinn kommt zu chrome://settings zugreifen und dann die Einstellungen gehen durch mit Selen begann ich diesen Weg nur für didaktische Neugier, aber dann traf ich einen Wald von Shadow-Roots-Elementen jetzt, wenn Sie mehr als 3 Schattenwurzelelement in Kombination mit dynamischen Inhalten ist eindeutig eine Möglichkeit zu verschleiern und machen es unmöglich zu automatisieren, Alth Obwohl es zumindest theoretisch klingen mag, sieht dieser Ansatz eher wie eine Sackgasse aus. Ich werde diese Antwort mit dem Beispielcode hinterlassen, nur um die Leute zu lernen, die versucht sind, diese Herausforderung anzunehmen.. Es war nicht nur schwer, nur die Inhaltseinstellungen aufgrund der Schattenwurzeln und dynamischen Änderungen zu finden, wenn Sie feststellen, dass die Schaltfläche an dieser Stelle nicht anklickbar ist.

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() 
Verwandte Themen