如何在Selenium中自动关闭「打开Microsoft Teams?」浏览器弹窗?
如何在Selenium中自动关闭「打开Microsoft Teams?」浏览器弹窗?
嘿,这个问题我之前做Teams会议自动化的时候可踩过坑!那个弹窗其实是浏览器的外部应用协议请求提示,不是普通的JavaScript弹窗,所以用alert.accept()或者alert.dismiss()根本没用,得换思路来处理。
我整理了几种靠谱的解决方法,按推荐程度排序:
方法一:提前配置浏览器,直接阻止弹窗出现
这是最稳妥的方式,通过设置浏览器偏好,让它自动拒绝唤起Microsoft Teams桌面端的请求,不会再弹出询问框。如果你用的是Chrome/Edge(Chromium内核),可以这么写代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 配置浏览器拒绝Teams协议的外部唤起 browser_prefs = { "protocol_handler.excluded_schemes": { "msteams": True } } chrome_options.add_experimental_option("prefs", browser_prefs) # 初始化driver driver = webdriver.Chrome(options=chrome_options) # 现在打开你的会议链接,不会再弹那个框了 driver.get("你的Teams会议链接")要是用Firefox的话,配置稍微有点不一样:
from selenium import webdriver from selenium.webdriver.firefox.options import Options firefox_options = Options() # 禁止Firefox询问是否打开Teams firefox_options.set_preference("network.protocol-handler.warn-external.msteams", False) firefox_options.set_preference("network.protocol-handler.external.msteams", False) driver = webdriver.Firefox(options=firefox_options) driver.get("你的Teams会议链接")方法二:直接用Teams网页版链接绕过弹窗
很多Teams会议链接其实都对应一个网页版入口,如果你不需要用桌面端,完全可以直接构造网页版的会议URL,这样从一开始就不会触发唤起桌面端的请求。比如把原链接里的唤起参数去掉,直接访问网页版的会议页面,自然就没弹窗了。不推荐的方法:模拟点击系统级弹窗
要是上面两种方法都不适用,还有人会用AutoIt、PyAutoGUI这类工具模拟点击弹窗的「取消」按钮,但这种方式非常依赖系统环境(比如屏幕分辨率、弹窗位置),换个电脑可能就失效了,所以除非万不得已,尽量别用。
我自己平时用方法一最多,在Windows和Mac的Chrome上都测试过,基本能完美解决这个弹窗问题。如果是用Edge,因为是Chromium内核,直接套用Chrome的配置就行,完全通用。
内容来源于stack exchange
相关产品推荐
相关产品推荐

