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

Headless Chrome加载扩展触发WebDriverException报错,求解决方案

解决Selenium Chrome无头模式加载扩展触发WebDriverException的问题

问题核心

你在无头模式下加载代理扩展时,Chrome无法找到扩展的后台页面,导致抛出WebDriverException——这是旧版无头模式对扩展支持不完善导致的典型问题,正常模式与无头模式的扩展加载逻辑存在差异。

可行解决方案

  • 切换为新版无头模式参数
    Chrome 112及以上版本推出的--headless=new参数,完全复刻正常浏览器的行为,对扩展的兼容性远优于旧版--headless。直接替换参数即可:
def new_driver():
    options = Options()
    options.add_extension("proxy.zip")
    # 替换为新版无头参数
    options.add_argument("--headless=new")
    options.add_experimental_option("excludeSwitches", ["enable-logging"])
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    driver = webdriver.Chrome(options=options)
    return driver
  • 解压扩展后加载文件夹
    加载zip格式的扩展在无头模式下偶尔会出现解析异常,把proxy.zip解压到本地文件夹,直接指向文件夹路径加载:
# 替换成你解压后的扩展文件夹路径
options.add_extension("./proxy_extension")
  • 添加扩展加载等待逻辑
    如果新版无头模式仍报错,给扩展后台页面留足加载时间,用显式等待确认扩展初始化完成:
from selenium.webdriver.support.ui import WebDriverWait

def new_driver():
    options = Options()
    options.add_extension("proxy.zip")
    options.add_argument("--headless=new")
    options.add_experimental_option("excludeSwitches", ["enable-logging"])
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    driver = webdriver.Chrome(options=options)
    # 等待扩展完成初始化,超时10秒
    WebDriverWait(driver, 10).until(
        lambda d: d.execute_script("return chrome.runtime && chrome.runtime.id === 'lgknfaobibciggbigdkldiecibigdfgm'")
    )
    return driver
  • 弃用扩展,直接使用Chrome代理参数
    如果不需要代理扩展的额外功能,直接用Chrome原生代理参数替代扩展,避免扩展加载问题:
# 替换成你的代理地址和端口
options.add_argument('--proxy-server=http://127.0.0.1:8080')

内容的提问来源于stack exchange,提问作者idk idk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:15:33