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

如何通过C# ChromeDriver为Chromium添加右键菜单自定义选项

实现Chromium右键自定义菜单并通过C# ChromeDriver加载

一、创建Chrome扩展文件

1. 编写manifest.json配置文件

创建名为manifest.json的文件,采用Manifest V3标准适配新版Chromium:

{
  "manifest_version": 3,
  "name": "自定义右键菜单",
  "version": "1.0",
  "description": "在Chromium任意位置右键添加自定义选项",
  "permissions": ["contextMenus", "activeTab", "scripting"],
  "background": {
    "service_worker": "background.js"
  }
}
  • manifest_version: 指定扩展版本,V3为当前官方推荐标准
  • permissions: 声明扩展所需权限,contextMenus用于创建右键菜单,scripting用于执行页面脚本
  • background: 指定后台服务脚本,负责注册右键菜单和监听点击事件

2. 编写后台脚本background.js

创建background.js文件,实现右键菜单的创建与点击逻辑:

// 注册自定义右键菜单,contexts设为"all"表示任意位置右键都显示
chrome.contextMenus.create({
  id: "custom-right-click-option",
  title: "我的自定义选项",
  contexts: ["all"]
});

// 监听菜单点击事件
chrome.contextMenus.onClicked.addListener((info, tab) => {
  if (info.menuItemId === "custom-right-click-option") {
    // 点击后执行的逻辑,示例为在当前页面弹出提示
    chrome.scripting.executeScript({
      target: { tabId: tab.id },
      function: () => {
        alert("你触发了自定义右键选项!");
      }
    });
  }
});
  • chrome.contextMenus.create: 创建菜单选项,id用于区分不同菜单,title是菜单显示文本
  • chrome.contextMenus.onClicked: 监听菜单点击,匹配id后执行对应操作

将上述两个文件放在同一文件夹(比如命名为CustomRightClickExt),可选添加图标文件(如icon16.png、icon48.png)并在manifest.json的action字段中配置。

二、在C# ChromeDriver中加载扩展

  1. 确保ChromeDriver版本与本地Chromium版本一致(版本不匹配会导致加载失败)
  2. 编写C#代码配置ChromeOptions并加载扩展:
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

namespace ChromeExtDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var chromeOptions = new ChromeOptions();
            // 替换为你的扩展文件夹绝对路径
            chromeOptions.AddArgument(@"--load-extension=C:\Projects\CustomRightClickExt");

            // 初始化ChromeDriver并打开页面
            using (var driver = new ChromeDriver(chromeOptions))
            {
                driver.Navigate().GoToUrl("https://example.com");
                // 可手动右键页面任意位置查看自定义菜单,或通过代码模拟右键操作
                System.Console.ReadLine();
            }
        }
    }
}
  • --load-extension参数用于加载本地未打包的扩展文件夹,若使用打包后的.crx文件,可改用chromeOptions.AddExtension(@"path\to\extension.crx")

注意事项

  • 若使用旧版Chromium(版本低于88),需改用Manifest V2标准:将manifest_version设为2,background字段改为"scripts": ["background.js"],并调整权限字段
  • 测试扩展时可先手动在Chromium中加载文件夹(打开扩展管理页面,开启开发者模式,点击"加载已解压的扩展程序"),确认菜单正常显示后再用ChromeDriver加载

内容的提问来源于stack exchange,提问作者Ahmed A. Mansour

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:25:20