我花了很多时间搜索这个问题。 最后,我结合了一些答案,结果很有效。我分享我的答案,如果有人编辑它或为我们提供更简单的方法来做到这一点,我将不胜感激。
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-然后您将能够使用上述代码以及您已下载的扩展文件的路径。
这是禁用图像的另一种方法:
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)
我在下面找到了它:
Java: Chrome 和 Firefox 都可以加载图像。语法不同,但参数上的字符串是相同的。
chromeOptions = new ChromeOptions();
HashMap<String, Object> images = new HashMap<String, Object>();
images.put("images", 2);
HashMap<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_setting_values", images);
chromeOptions.setExperimentalOption("prefs", prefs);
driver=new ChromeDriver(chromeOptions);
firefoxOpt = new FirefoxOptions();
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("permissions.default.image", 2);
firefoxOpt.setProfile(profile);
每个人可能都会想到另一种方法来访问
chrome://settings
,然后使用硒进行设置我开始这种方式只是为了说教好奇心,但是当你遇到更多时,我现在遇到了阴影根元素的森林超过 3 个影子根元素与动态内容相结合显然是一种混淆并使之不可能自动化的方法,虽然听起来至少在理论上是可能的,但这种方法看起来更像是一个死胡同,我将用示例代码留下这个答案,只是纯粹出于学习目的,向那些受诱惑去挑战的人做广告。。当您发现此时按钮不可点击时,不仅由于影子根和动态变化而很难找到内容设置。
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()
我个人无法让“profile.default_content_setting_values”标志发挥作用,所以对我有用的是:
options = Options()
options.add_extension('Block-image.crx')
driver = webdriver.Chrome(service=Service("chromedriver.exe"), options=options)
获取“Block-Image.crx”文件:
浏览器访问“http://crxextractor.com/”(或其他crx下载工具)
并提供网址: https://chrome.google.com/webstore/detail/block-image/pehaalcefcjfccdpbckoablngfkfgfgj
将下载扩展程序。
将 crx 文件重命名为“Block-Image.crx”