Mac系统下使用Selenium无法关闭OS App Selector弹窗求解决方案
绕过MacOS下Zoom会议页OS应用选择弹窗的可行方案
方案1:直接使用Zoom网页入会链接(最优,完全规避弹窗)
Zoom的网页入会入口有独立的固定格式,不用走触发客户端唤起的流程:
- 原始会议链接格式:
https://zoom.us/j/[会议ID] - 直接替换为网页入会格式:
https://zoom.us/wc/join/[会议ID]
如果会议设置了密码,直接把原链接的pwd参数完整拼接在后面即可,跳转后直接进入网页入会的信息填写页,完全不会触发OS应用选择弹窗。
方案2:修改Chromedriver启动参数拦截协议唤起弹窗
在初始化Chrome实例的时候添加以下启动参数,直接拦截Zoom的客户端唤起请求:
const { Builder } = require('selenium-webdriver'); const chrome = require('selenium-webdriver/chrome'); let options = new chrome.Options(); // 禁用Zoom相关协议的唤起请求弹窗 options.addArguments('--disable-external-protocol-handler-requests-for-urls=zoommtg://*,zoomus://*'); // 额外禁用外部协议弹窗的全局开关(可选补充) options.addArguments('--disable-default-apps'); options.addArguments('--disable-external-protocol-requests'); let driver = await new Builder() .forBrowser('chrome') .setChromeOptions(options) .build();
该配置在Chrome 90及以上版本生效,启动后点击LAUNCH MEETING按钮也不会弹出OS应用选择窗口。
方案3:修复Mac下按键模拟失效问题
如果一定要保留原有按键模拟的逻辑,失效原因是MacOS的权限限制:
- 打开系统设置>隐私与安全性>辅助功能
- 在允许控制电脑的应用列表中,勾选你运行代码的终端(Terminal/iTerm等),如果是通过IDE启动则对应勾选IDE程序
- 保存设置后重启终端/IDE和你的Node程序,node-key-sender等包的按键指令即可正常识别
内容的提问来源于stack exchange,提问作者Anonymous Australian
相关产品推荐
相关产品推荐

