You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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")
原因分析
  1. 默认用户配置干扰:你直接使用了Chrome的默认用户目录Default,该目录下的个性化设置(比如广告拦截插件、图片屏蔽权限、隐私规则)会被Selenium启动的Chrome继承。如果默认用户开启了图片屏蔽或广告拦截,就会导致自动化环境中图片无法加载。
  2. 目录资源冲突:如果本地Chrome浏览器正在运行,会占用Default目录的文件锁,Selenium启动的Chrome无法完整读取配置,进而引发资源加载异常。
  3. 配置文件损坏:默认用户目录下的配置文件(如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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 18:00:58