Selenium调用browser.end()无法关闭Edge:下载待确认弹窗阻碍求助
这个问题我在Edge自动化测试里碰到好多次了,确实是默认的下载安全提示在搞鬼,完全可以通过配置浏览器的Capabilities来跳过这个确认,不用手动去处理对话框,给你几个可行的方案:
用EdgeOptions配置下载偏好(推荐)
现在Selenium更推荐用EdgeOptions而非旧的desiredCapabilities来配置浏览器参数,你可以通过设置下载的默认路径,同时让浏览器自动确认下载操作,示例代码如下(适配你提到的browser.end()用法,以WebdriverIO为例):exports.config = { capabilities: [{ browserName: 'MicrosoftEdge', 'ms:edgeOptions': { prefs: { // 替换成你的实际下载目录路径 'download.default_directory': '/path/to/your/download/folder', // 关闭下载确认对话框 'download.prompt_for_download': false, // 自动创建不存在的下载目录 'download.directory_upgrade': true, // 启用安全浏览,避免额外的安全提示 'safebrowsing.enabled': true } } }] }如果你用的是原生Selenium,配置思路类似,直接通过
EdgeOptions的setUserPreferences方法设置这些参数即可。针对旧版EdgeHTML(如16.0版本)的特殊配置
如果你还在使用旧版的EdgeHTML浏览器(比如你提到的16.0版本),上面的Chromium风格配置不生效,需要用旧版的配置方式:exports.config = { capabilities: [{ browserName: 'edge', 'edgeOptions': { 'prefs': { 'download.prompt_for_download': false, 'download.default_directory': '/path/to/your/download/folder' } } }] }不过旧版Edge现在已经被微软淘汰,建议优先升级到基于Chromium的新版Edge和对应的驱动,兼容性和稳定性都会好很多。
处理特殊文件类型的额外提示
有时候即使配置了基础的下载偏好,某些特殊文件类型(比如exe、zip、PDF)还是会触发额外的安全提示,这时候可以添加对应的文件类型到自动处理白名单:'ms:edgeOptions': { prefs: { // ...其他配置 // 自动打开PDF文件,不弹出确认 'plugins.always_open_pdf_externally': true, // 指定自动确认下载的文件扩展名 'download.extensions_to_open': 'exe,zip,rar' } }
这些配置的核心就是通过download.prompt_for_download: false直接关闭下载确认对话框,让浏览器自动完成下载操作,这样调用browser.end()时就不会因为弹窗卡住了。
内容的提问来源于stack exchange,提问作者1.0101E+16

