求助:Selenium Edge Driver无法通过代码打开浏览器扩展页面
问题:Selenium 4 + Edge Driver 无法打开浏览器扩展页面(VB.NET)
环境信息
- 系统:Windows 11
- Edge 版本:128.0.2739.42
- Edge Driver 版本:128.0.2739.42
- 开发语言:VB.NET
代码示例
Imports OpenQA.Selenium Imports OpenQA.Selenium.Edge Imports OpenQA.Selenium.Support.UI Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim options As New EdgeOptions() options.AddArgument("--user-data-dir=C:\Users\jasonfan\AppData\Local\Microsoft\Edge\User Data") options.AddArgument("--no-sandbox") options.AddArgument("--remote-debugging-pipe") options.AddArgument("--allow-running-insecure-content") options.AddArgument("--ignore-certificate-errors") Dim driver As IWebDriver = New EdgeDriver(options) driver.Navigate().GoToUrl("chrome-extension://odphnbhiddhdpoccbialllejaajemdio/options.html") End Sub End Class
问题描述
手动访问chrome-extension://odphnbhiddhdpoccbialllejaajemdio/options.html完全正常,但通过Selenium代码导航时无法打开该页面。最初出现ERR_BLOCKED_BY_CLIENT及DevTools监听报错,添加--remote-debugging-pipe参数后错误提示消失,但仍无法打开扩展页面,尝试过忽略证书错误、禁用DevTools、调整日志等级等操作均无效。
解决方案
1. 替换默认用户数据目录
直接使用系统默认Edge用户数据目录,可能因Edge进程占用导致Selenium无法正确加载扩展。建议创建独立的空目录:
' 替换为自定义空目录路径 options.AddArgument("--user-data-dir=C:\Users\jasonfan\AppData\Local\Microsoft\Edge\Selenium_UserData")
注意:目录需为空或未被Edge使用过,避免资源冲突。
2. 显式加载扩展文件
如果是未打包的开发版扩展,通过AddExtension直接加载扩展文件夹:
' 替换为你的扩展文件夹路径 options.AddExtension("C:\Path\To\Your\Extension_Folder")
如果是打包的CRX文件,使用:
options.AddExtension("C:\Path\To\Your\Extension.crx")
3. 等待扩展加载完成
扩展加载需要时间,直接导航可能导致页面未就绪。添加显式等待确保页面就绪:
Dim driver As IWebDriver = New EdgeDriver(options) ' 等待10秒,直到URL包含扩展协议头 Dim wait As New WebDriverWait(driver, TimeSpan.FromSeconds(10)) wait.Until(Function(d) d.Url.StartsWith("chrome-extension://")) driver.Navigate().GoToUrl("chrome-extension://odphnbhiddhdpoccbialllejaajemdio/options.html")
4. 添加扩展权限参数
添加以下参数确保扩展正常启用:
' 仅启用指定ID的扩展,避免其他扩展干扰 options.AddArgument("--disable-extensions-except=odphnbhiddhdpoccbialllejaajemdio") ' 强制加载指定扩展 options.AddArgument("--load-extension=odphnbhiddhdpoccbialllejaajemdio") ' 允许访问扩展本地资源 options.AddArgument("--allow-access-from-files")
5. 调整远程调试参数
移除--remote-debugging-pipe,改用端口调试模式:
options.AddArgument("--remote-debugging-port=9222")
内容的提问来源于stack exchange,提问作者Jason Fan
相关产品推荐
相关产品推荐

