Python:在Selenium中禁用图像Google ChromeDriver

93ze6v8z  于 2023-08-01  发布在  Go
关注(0)|答案(4)|浏览(145)

我花了很多时间来寻找这个。在一天结束的时候,我把一些答案结合起来,它起作用了。我分享我的答案,如果有人编辑它或为我们提供一个更简单的方法来做到这一点,我将不胜感激。
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-然后,您将能够使用上述代码和您已下载的扩展文件的路径。

aydmsdu9

aydmsdu91#

以下是另一种禁用图像的方法:

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)

字符串
我在下面找到了:
http://nullege.com/codes/show/src@o@s@osintstalker-HEAD@fbstalker1.py/56/selenium.webdriver.ChromeOptions.add_experimental_option

kqhtkvqz

kqhtkvqz2#

还有另一种方法可能会让每个人都想到访问chrome://settings,然后使用selenium进行设置,我开始这种方式只是为了教学的好奇心,但后来我遇到了一个阴影根元素的森林,现在当你遇到超过3个阴影根元素与动态内容相结合时,显然是一种混淆并使其无法自动化的方法,**虽然听起来至少在理论上是可能的,但这种方法看起来更像是一个死胡同,我将把这个答案与示例代码一起留下,只是为了纯粹的学习目的,以广告那些试图去挑战的人。不仅很难找到,只是内容设置,由于shadowroots和动态变化时,你发现按钮是不能点击在这一点上。

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

字符串

aemubtdh

aemubtdh3#

**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);

字符串

jdgnovmf

jdgnovmf4#

我个人无法让“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下载工具)
并提供URL:https://chrome.google.com/webstore/detail/block-image/pehaalcefcjfccdpbckoablngfkfgfgj
扩展将下载。
将crx文件重命名为“Block-Image.crx”

相关问题