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
相关产品推荐
相关产品推荐

