Selenium+ChromeDriver加载图片失败问题排查与解决求助
问题描述
使用Selenium搭配ChromeDriver执行自动化任务时,遇到图片无法加载的问题。排查后确认:启用用于保留会话的--user-data-dir参数时图片无法加载,注释该参数则图片正常显示。
涉及的参数代码:
self.chrome_options.add_argument("--user-data-dir=C:\\Users\\[username]\\AppData\\Local\\Google\\Chrome\\User Data\\Default")
调用Selenium的方式:
driver=WD.CustWebDriver(temp_download_dir) driver=driver.start_driver()
CustWebDriver类完整代码:
class CustWebDriver: def __init__(self,temp_download_dir): self.temp_download_dir=temp_download_dir #remove headless to see what is happening self.chrome_options = Options() if browser_headless==True: self.chrome_options.add_argument("--headless") userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36" self.chrome_options.add_argument(f'user-agent={userAgent}') self.chrome_options.add_argument("--user-data-dir=C:\\Users\\[Username]\\AppData\\Local\\Google\\Chrome\\User Data\\Default") self.chrome_options.add_argument("--window-size=1920x1080") self.chrome_options.add_argument("--disable-notifications") self.chrome_options.add_argument('--no-sandbox') self.chrome_options.add_argument('log-level=1') self.chrome_options.add_experimental_option("prefs", { "download.prompt_for_download": False, "download.directory_upgrade": True, "safebrowsing_for_trusted_sources_enabled": False, "safebrowsing.enabled": False, }) self.chrome_options.add_argument('--disable-gpu') self.chrome_options.add_argument('--disable-software-rasterizer') self.chrome_options.add_experimental_option("detach", True) def start_driver(self): try: driver = webdriver.Chrome(options=self.chrome_options) driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command') params = {'cmd':'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': self.temp_download_dir}} driver.execute("send_command", params) return driver except Exception as e: print(e) sys.exit("Chromedriver Error")
原因分析
- 默认用户配置干扰:你直接使用了Chrome的默认用户目录
Default,该目录下的个性化设置(比如广告拦截插件、图片屏蔽权限、隐私规则)会被Selenium启动的Chrome继承。如果默认用户开启了图片屏蔽或广告拦截,就会导致自动化环境中图片无法加载。 - 目录资源冲突:如果本地Chrome浏览器正在运行,会占用
Default目录的文件锁,Selenium启动的Chrome无法完整读取配置,进而引发资源加载异常。 - 配置文件损坏:默认用户目录下的配置文件(如
Preferences)可能存在损坏或异常,导致图片加载逻辑出现错误。
解决方法
方法1:使用独立的Selenium专用用户目录
不要直接使用Chrome默认的Default目录,新建一个专门的用户目录供自动化脚本使用:
# 替换为你新建的目录路径,示例如下 self.chrome_options.add_argument("--user-data-dir=C:\\Users\\[username]\\AppData\\Local\\Google\\Chrome\\SeleniumAutoProfile")
首次启动时,Selenium会自动在该目录生成干净的默认配置,彻底避免原有用户设置的干扰。
方法2:清理默认用户的异常配置
如果坚持使用默认目录,检查并修改以下设置:
- 关闭Chrome中安装的广告拦截类插件(如AdBlock、uBlock Origin)
- 确保Chrome的图片加载权限开启:设置→隐私和安全→网站设置→图片→选择“允许所有网站显示图片”
- 重置Chrome设置:设置→高级→重置并清理→将设置恢复为原始默认值
方法3:启动前关闭本地Chrome进程
运行自动化脚本前,确保本地Chrome浏览器完全关闭(可通过任务管理器结束所有chrome.exe进程),避免目录文件锁冲突导致配置读取异常。
方法4:通过ChromeOptions强制开启图片加载
在实验性偏好设置中添加强制图片加载的配置,覆盖用户目录中的原有设置:
self.chrome_options.add_experimental_option("prefs", { # 保留原有下载相关配置 "download.prompt_for_download": False, "download.directory_upgrade": True, "safebrowsing_for_trusted_sources_enabled": False, "safebrowsing.enabled": False, # 添加强制图片加载配置 "profile.default_content_setting_values.images": 1, "profile.managed_default_content_settings.images": 1 })
内容的提问来源于stack exchange,提问作者Cristian Avendaño
相关产品推荐
相关产品推荐

