Python: désactiver les images dans Google ChromeDriver
je passe beaucoup de temps à chercher à ce sujet. À la fin de la journée, j'ai combiné un certain nombre de réponses et ça fonctionne. Je partage ma réponse et j'apprécierai que quelqu'un la modifie ou nous offre un moyen plus facile de le faire.
1-la réponse dans images désactivées dans le sélénium Google ChromeDriver fonctionne en Java. Nous devrions donc faire la même chose en Python:
opt = webdriver.ChromeOptions()
opt.add_extension("Block-image_v1.1.crx")
browser = webdriver.Chrome(chrome_options=opt)
2 - Mais le téléchargement de "Bloc de image_v1.1.crx" est un peu difficile, car il n'y a pas de moyen direct de le faire. Dans ce but, au lieu d'aller à: https://chrome.google.com/webstore/detail/block-image/pehaalcefcjfccdpbckoablngfkfgfgj
vous pouvez aller à http://chrome-extension-downloader.com / et coller l'url d'extension là pour être en mesure de télécharger le fichier d'extension.
3-alors vous pourrez utiliser le code mentionné ci-dessus avec le chemin l'extension de fichier que vous avez téléchargé.
2 réponses
Voici une autre façon de désactiver les images:
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)
Je l'ai trouvé ci-dessous:
il y a une autre façon qui vient probablement à l'esprit à tout le monde d'accéder à chrome://settings
et puis passer par les paramètres avec le sélénium j'ai commencé de cette façon juste pour la curiosité didactique, mais ensuite j'ai frappé une forêt d'éléments shadow-roots maintenant quand vous rencontrez plus de 3 élément shadow root combiné avec du contenu dynamique est clairement une façon d'obscurcir et de rendre impossible d'automatiser, bien que pourrait sembler au moins théoriquement possible cette approche ressemble plus à un mort fin, je vais laisser cette réponse avec le code exemple, juste à des fins purement d'apprentissage pour annoncer les gens tentés d'aller au défi. . Non seulement était difficile de trouver juste les paramètres de contenu en raison de la shadowroots et le changement dynamique lorsque vous trouvez que le bouton n'est pas cliquable à ce point.
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()