如何在C#版Selenium中允许ChromeDriver的剪贴板权限?
在C# Selenium中自动允许Chrome剪贴板权限
你之前尝试的profile.clipboard_controls_mode配置已不再生效,以下是两种可靠的实现方式:
方法一:通过ChromeOptions全局设置剪贴板权限
直接通过配置项授予所有网站剪贴板权限,并禁用权限提示弹窗:
ChromeOptions options = new ChromeOptions(); // 允许所有网站的剪贴板权限 options.AddUserProfilePreference("profile.content_settings.exceptions.clipboard.*.setting", 1); // 设置默认剪贴板权限为允许 options.AddUserProfilePreference("permissions.default.clipboard", 1); // 禁用剪贴板权限提示弹窗特性 options.AddArgument("--disable-features=ClipboardContentSetting"); IWebDriver driver = new ChromeDriver(options);
方法二:使用Chrome DevTools协议精准授予权限
这种方式可以针对特定域名单独授予剪贴板读写权限,安全性更高:
ChromeOptions options = new ChromeOptions(); ChromeDriver driver = new ChromeDriver(options); // 初始化DevTools会话 var devTools = driver as IDevTools; var devToolsSession = devTools.CreateDevToolsSession(); // 授予剪贴板读取权限 devToolsSession.SendCommand(new Command("Permissions.setPermission", new Dictionary<string, object> { { "permission", "clipboard-read" }, { "setting", "granted" } })); // 授予剪贴板写入权限 devToolsSession.SendCommand(new Command("Permissions.setPermission", new Dictionary<string, object> { { "permission", "clipboard-write" }, { "setting", "granted" } })); // 也可以指定具体域名(替换为你的目标网站域名) // devToolsSession.SendCommand(new Command("Permissions.setPermission", new Dictionary<string, object> // { // { "origin", "https://your-target-site.com" }, // { "permission", "clipboard" }, // { "setting", "granted" } // }));
说明:方法一适合不需要区分域名的场景,方法二更灵活,能避免全局开放权限带来的潜在风险。
内容的提问来源于stack exchange,提问作者Yevhen Pavlichenko
相关产品推荐
相关产品推荐

