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

Chrome 137+版本中如何以编程方式加载扩展程序?

Chrome 137+ 自动化测试加载扩展的替代方案

一、Selenium 解决方案

1. 借助 Chrome DevTools Protocol (CDP) 安装扩展

通过CDP的browser.addExtension命令直接加载扩展,示例代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

service = Service()
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# 传入本地扩展文件夹路径或CRX文件路径
driver.execute_cdp_cmd("browser.addExtension", {
    "path": "/path/to/your/extension/folder"
})

注意:该方法支持未打包的开发版扩展文件夹或已打包的CRX文件,且Selenium启动的Chrome默认处于调试模式,满足CDP调用要求。

2. 预配置Chrome用户数据目录

先在普通Chrome中安装好目标扩展,然后将该用户数据目录通过--user-data-dir参数传递给Selenium:

options = webdriver.ChromeOptions()
options.add_argument("--user-data-dir=/path/to/test-profile")
driver = webdriver.Chrome(options=options)

这种方式适合长期固定使用的扩展,建议专门创建测试专用的用户目录,避免混入个人配置影响测试环境。

二、Playwright 解决方案

1. 使用原生context.add_extension()方法

Playwright内置了适配Chrome版本的扩展加载API,无需依赖废弃的启动参数,示例代码:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context()
    # 加载本地扩展文件夹
    context.add_extension("/path/to/your/extension/folder")
    page = context.new_page()
    page.goto("https://example.com")
    # 后续测试操作
    browser.close()

该方法会自动处理Chrome版本的适配逻辑,是Playwright环境下的优先选择。

2. 持久化上下文复用扩展

创建持久化上下文,将扩展安装到指定目录后,后续启动可直接复用:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    user_data_dir = "/path/to/persistent-test-profile"
    context = p.chromium.launch_persistent_context(
        user_data_dir,
        headless=False,
        args=["--disable-extensions-except=/path/to/extension", "--load-extension=/path/to/extension"]
    )
    # 首次运行完成扩展安装,后续启动该上下文即可自动加载扩展
    page = context.new_page()
    page.goto("https://example.com")
    context.close()

三、通用注意事项

  • 确保扩展为开发版未打包文件夹或已签名的CRX文件,Chrome 137+对未签名扩展的加载权限管控更严格,非调试模式下无法加载。
  • 无头模式下部分扩展可能无法正常运行,建议先在有头模式验证功能,再尝试适配--headless=new参数。
  • 对于需要特殊权限的扩展,加载后可通过CDP命令手动授予权限,示例:
# Selenium中通过CDP授予地理位置权限
driver.execute_cdp_cmd("browser.grantPermissions", {
    "permissions": ["geolocation"],
    "origin": "https://example.com"
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:42:36