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

Selenium Python3无法关闭火狐浏览器下载成功后的通知弹窗

环境信息
  • Selenium版本:3.141
  • Mozilla Firefox版本:101.0.1
  • 自动化框架:Pytest
问题现象

文件可正常下载完成,但下载后火狐浏览器右上角弹出的下载通知会遮挡界面,导致后续操作无法执行,期望通过Selenium代码关闭该通知,但所有尝试的方案均未生效。
火狐浏览器右上角下载通知遮挡界面截图

已尝试的无效方案
  1. 配置FirefoxOptions相关首选项参数,代码如下:
import os
from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

options = webdriver.FirefoxOptions()
# options = FirefoxProfile()
options.set_preference("dom.webnotifications.enabled", False)
options.set_preference("dom.push.enabled", False)
options.set_preference("browser.helperApps.neverAsk.saveToDisk","application/pptx, application/csv, application/ris, text/csv, image/png, application/pdf, text/html, text/plain, application/zip, application/x-zip, application/x-zip-compressed, application/download, application/octet-stream")
options.set_preference("browser.download.panel.shown", False)
options.set_preference("browser.download.folderList", 2)
options.set_preference("browser.download.manager.showWhenStarting", False)
options.set_preference("browser.download.dir", os.path.join(parent_folder, 'Downloads'))
options.set_preference("browser.download.manager.closeWhenDone", True)
options.set_preference("browser.download.manager.showAlertOnComplete", False)
# options.add_argument("--headless")
# options.headless = True
web_driver = webdriver.Firefox(firefox_options=options,executable_path=GeckoDriverManager().install())
  1. 文件下载完成后,模拟按键操作尝试关闭通知未生效,相关代码如下:
self.driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.ENTER)

或

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
ActionChains(self.driver).send_keys(Keys.ESCAPE).perform()
  1. 尝试刷新页面,通知仍然留存。
可行解决方案

方案1:前置配置(推荐,从根源禁用弹窗)

之前配置的browser.download.manager.*、browser.download.panel.shown参数仅对Firefox 57(量子版本)之前的旧版下载管理器生效,101版本火狐已经重构了下载面板逻辑,新增以下配置即可禁止下载完成后自动弹出右上角面板:

# 禁止下载完成后自动展开工具栏下载面板
options.set_preference("browser.download.alwaysOpenPanel", False)

补充说明:初始化WebDriver时传入的firefox_options参数在Selenium 3.141版本虽做了兼容,但已属于废弃写法,建议替换为标准参数options=options避免潜在兼容问题。

方案2:弹窗出现后主动关闭

之前模拟按键、刷新页面无效的核心原因:Selenium默认的按键发送、页面刷新操作的作用对象是网页DOM内容,无法将事件传递给浏览器外壳层面的UI组件,下载面板属于浏览器原生UI,不受网页操作的直接控制。
直接点击网页内不在弹窗遮挡范围内的区域即可收起面板,示例代码:

from selenium.webdriver.common.by import By
# 点击页面根元素(左上角无遮挡区域)触发面板收起
self.driver.find_element(By.TAG_NAME, 'html').click()

如果点击后仍未收起,可直接偏移坐标点击页面最左上角的无遮挡位置:

from selenium.webdriver.common.action_chains import ActionChains
# 移动到页面坐标(5,5)位置点击,该区域属于网页内容,不会被右上角下载面板遮挡
ActionChains(self.driver).move_by_offset(5,5).click().perform()
# 操作完将鼠标移回初始位置,避免影响后续元素交互
ActionChains(self.driver).move_by_offset(-5,-5).perform()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:39:17