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

如何在Chrome 117+版本中用Selenium C#自动点击弹窗的Allow按钮

C# 实现 Chrome 117+ 中 Selenium 自动点击权限弹窗的Allow按钮

Chrome 117及以上版本的权限请求弹窗(如通知权限)属于原生系统弹窗,无法通过普通Selenium元素定位操作,以下是两种可行的C#实现方案:

方案1:启动浏览器时预先授予权限(推荐)

通过配置ChromeOptions直接指定允许目标权限,从根源避免弹窗出现:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

class PermissionAutoHandler
{
    static void Main(string[] args)
    {
        ChromeOptions options = new ChromeOptions();
        // 配置通知权限为允许(1=允许,2=阻止,0=询问)
        options.AddUserProfilePreference("profile.default_content_setting_values.notifications", 1);
        // 若需其他权限,替换对应字段即可:
        // 地理位置:profile.default_content_setting_values.geolocation
        // 麦克风:profile.default_content_setting_values.microphone

        // 初始化ChromeDriver(需确保版本与Chrome 117+匹配)
        using (IWebDriver driver = new ChromeDriver(options))
        {
            driver.Navigate().GoToUrl("你的目标网站地址");
            // 后续业务逻辑操作
        }
    }
}

方案2:通过Chrome DevTools协议(CDP)动态处理权限

如果需要在运行时动态授予权限,可使用CDP发送命令自动允许:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.DevTools;
using OpenQA.Selenium.DevTools.V117.Permissions;

class PermissionAutoHandler
{
    static async Task Main(string[] args)
    {
        ChromeOptions options = new ChromeOptions();
        using (IWebDriver driver = new ChromeDriver(options))
        {
            // 初始化DevTools会话
            IDevTools devTools = driver as IDevTools;
            DevToolsSession session = devTools.GetDevToolsSession();

            // 启用Permissions模块
            await session.SendCommandAsync(new EnableCommandSettings());

            // 设置指定域名的通知权限为允许
            await session.SendCommandAsync(new SetPermissionCommandSettings
            {
                Origin = "https://你的目标网站域名",
                Permission = "notifications",
                Setting = PermissionSetting.Allow
            });

            driver.Navigate().GoToUrl("你的目标网站地址");
            // 权限请求会自动被允许,无需手动点击弹窗
        }
    }
}

注意事项

  • 必须保证ChromeDriver版本与本地Chrome浏览器版本(117+)严格一致,否则会出现兼容性问题。
  • 权限类型需根据实际弹窗调整,例如geolocation对应地理位置权限,camera对应摄像头权限。
  • 方案1执行效率更高,无需等待弹窗加载;方案2适用于需要动态控制权限的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:22:25