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

如何在Selenium WebDriver中处理浏览器权限弹窗及指定类型通知

处理Selenium启动浏览器时的权限请求与通知弹窗

嘿,刚好在项目里多次碰到这类弹窗的麻烦!下面就给你拆解两种常见场景的处理方法,尤其是你提到的那种标注THIS的通知权限弹窗:

一、提前配置浏览器选项,从根源避免弹窗(最稳妥方案)

与其等弹窗出现再折腾,不如直接告诉浏览器别弹出这类请求,这是我最常用的方法,亲测稳定不翻车。

1. Chrome浏览器(对应你提到的THIS类型通知弹窗)

Chrome的通知、摄像头、地理位置这类权限请求,都可以通过启动参数提前禁用:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 初始化Chrome配置项
chrome_options = Options()
# 核心:禁用通知权限请求,直接屏蔽你说的那种弹窗
chrome_options.add_argument("--disable-notifications")
# 可选:如果有其他权限需求,比如禁用摄像头/麦克风请求
chrome_options.add_argument("--disable-media-stream")
# 可选:禁用地理位置权限请求
chrome_options.add_argument("--disable-geolocation")

# 启动带配置的Chrome浏览器
driver = webdriver.Chrome(options=chrome_options)
driver.get("你的目标网页地址")

2. Firefox浏览器

Firefox通过设置偏好来禁用权限请求,逻辑类似:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

firefox_options = Options()
# 禁用通知权限
firefox_options.set_preference("dom.webnotifications.enabled", False)
# 可选:禁用媒体设备(摄像头/麦克风)权限请求
firefox_options.set_preference("media.navigator.permission.disabled", True)

driver = webdriver.Firefox(options=firefox_options)

二、弹窗已出现时的动态处理(备选方案)

如果提前配置没覆盖到,或者需要动态调整权限(比如有时候要允许通知),可以用Chrome DevTools Protocol(CDP)来动态设置:

# 启动浏览器并打开目标页面后,执行CDP命令设置通知权限
driver.execute_cdp_cmd("Browser.setPermission", {
    "origin": driver.current_url,
    "permission": "notifications",
    "setting": "denied"  # 可选值:"granted"(允许)或"denied"(拒绝)
})

小提醒

  • 优先选择提前配置的方案,因为弹窗出现后处理容易出现定位超时、元素找不到的问题
  • CDP方法仅支持Chrome、Edge这类基于Chromium内核的浏览器
  • 要是碰到系统级的权限请求(比如Windows系统弹出的摄像头授权框),Selenium本身处理不了,需要借助AutoIt、PyAutoGUI这类第三方工具,但这种场景很少见

内容的提问来源于stack exchange,提问作者Sunil Kumawat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:18:02