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

Firefox下载提示干扰Selenium脚本运行问题求助

解决Firefox下载按钮提示框干扰Selenium脚本的问题

方案一:补充Firefox偏好设置,彻底抑制提示或隐藏下载按钮

你当前的偏好设置覆盖不全,可以新增以下配置,要么直接关闭下载完成的提示,要么自动隐藏工具栏上的下载按钮:

修改后的代码:

# Python version = 3.12.3
# Selenium version = 4.22.0
# Firefox version = 128.0

options = FFOptions()
# 保留原有设置
options.set_preference("browser.download.panel.shown", False)
options.set_preference("browser.download.alwaysOpenPanel", False)   
options.set_preference("browser.download.manager.showWhenStarting", False)
options.set_preference("browser.download.manager.focusWhenStarting", False)
options.set_preference("browser.download.manager.showAlertOnComplete", False)
options.set_preference("browser.download.manager.useWindow", False)

# 新增配置:关闭下载完成通知
options.set_preference("browser.download.manager.notifyWhenComplete", False)
# 禁用下载面板动画和按钮提示
options.set_preference("browser.download.panel.animateNotifications", False)
options.set_preference("browser.download.panel.disableButton", True)

# 关键配置:通过UI定制状态直接隐藏工具栏上的下载按钮
# 该值为Firefox存储工具栏布局的JSON字符串,已移除下载按钮
options.set_preference("browser.uiCustomization.state", '{"placements":{"widget-overflow-fixed-list":["downloads-button","bookmarks-menu-button","history-panelmenu","fullscreen-button","find-button","developer-button"],"nav-bar":["back-button","forward-button","stop-reload-button","home-button","urlbar-container"],"toolbar-menubar":["menubar-items"],"TabsToolbar":["tabbrowser-tabs","new-tab-button","alltabs-button"],"PersonalToolbar":["personal-bookmarks"]},"seen":["developer-button"],"dirtyAreaCache":["nav-bar","toolbar-menubar","TabsToolbar","PersonalToolbar","widget-overflow-fixed-list"],"currentVersion":16,"newElementCount":2}')

service = FFService(executable_path="/snap/bin/geckodriver")
self.driver = webdriver.Firefox(options=options, service=service)

说明:如果上述browser.uiCustomization.state不兼容你的Firefox版本,可以手动移除下载按钮后,在about:config中找到对应值复制替换。

方案二:执行JavaScript隐藏下载按钮(偏好设置无效时备选)

如果偏好设置不生效,可在浏览器启动后立即执行一段JS隐藏下载按钮:

# 启动浏览器后执行
self.driver.execute_script("""
    const downloadButton = document.querySelector('#downloads-button');
    if (downloadButton) {
        downloadButton.style.display = 'none';
    }
""")

方案三:处理弹出的提示框(兜底方案)

如果前两种方案都失效,可以显式等待提示框出现并关闭:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 第一个文件下载完成后,等待并关闭可能出现的提示框
try:
    alert = WebDriverWait(self.driver, 5).until(EC.alert_is_present())
    alert.accept()
except:
    # 无提示框则继续执行
    pass

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:58:11