Selenium结合Python操控Chrome如何重新加载已禁用的图片?
Selenium禁用图片加载后单独加载指定图片的实现方法
你之前通过ChromeOptions的prefs配置全局禁用了图片加载,要在不刷新整个页面的前提下加载指定图片,可通过以下两种方案实现:
方案1:仅加载单张指定图片(推荐)
不需要修改全局配置,只针对目标图片元素执行JS强制加载即可,不会触发页面其他图片的加载请求:
from selenium.webdriver.common.by import By # 1. 定位到你需要加载的目标图片元素 target_img = driver.find_element(By.CSS_SELECTOR, "替换为目标图片的CSS选择器") # 2. 执行JS强制加载该图片 driver.execute_script(""" const imgUrl = arguments[0].src || arguments[0].dataset.src; const loadImg = new Image(); loadImg.src = imgUrl; loadImg.onload = () => { arguments[0].src = imgUrl; } """, target_img)
注:如果是懒加载图片,代码中会自动取
dataset.src属性的地址,适配绝大多数懒加载场景。
方案2:临时允许所有图片加载,加载完成后恢复禁用
适合需要同时加载多张图片的场景,通过Chrome DevTools Protocol(CDP)命令实时修改全局配置,无需重启浏览器:
# 1. 临时允许所有图片加载 driver.execute_cdp_cmd("ContentSettings.setRule", { "primaryPattern": "<all_urls>", "resourceType": "image", "setting": "allow" }) # 2. 执行JS重新加载页面所有图片 driver.execute_script(""" document.querySelectorAll('img').forEach(img => { const realSrc = img.src || img.dataset.src; if (realSrc) img.src = realSrc; }) """) # 3. 恢复全局禁用图片的配置,避免后续页面加载多余图片 driver.execute_cdp_cmd("ContentSettings.setRule", { "primaryPattern": "<all_urls>", "resourceType": "image", "setting": "block" })
内容的提问来源于stack exchange,提问作者mrPark
相关产品推荐
相关产品推荐

