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

Firefox忽略指定下载目录求助:文件仍存入默认Downloads文件夹

解决Firefox WebDriver指定下载目录不生效的问题

嘿,这个问题我之前也踩过坑,大概率是你初始化FirefoxProfile的方式错了,还有几个容易忽略的偏好设置细节,我给你一步步捋清楚:

1. 核心错误:FirefoxProfile构造函数用错了参数

你写的webdriver.FirefoxProfile(download_directory)是把下载目录当成了现有Firefox配置文件的路径,这完全搞反了!这个构造函数的参数是用来加载已存在的Firefox配置文件夹的,不是直接设置下载路径。正确的做法是先创建一个默认的空白配置实例,再通过set_preference来配置下载相关选项。

2. 必须配置的完整偏好项组合

光设置browser.download.dir还不够,得配合几个关键偏好才能让Firefox乖乖用自定义目录:

  • browser.download.folderList:设为2,表示启用自定义下载目录(0对应桌面,1对应默认Downloads文件夹)
  • browser.download.dir:你的目标下载目录(必须写绝对路径)
  • browser.download.manager.showWhenStarting:设为False,禁用下载弹窗(弹窗会干扰自动下载逻辑)
  • browser.helperApps.neverAsk.saveToDisk:指定你要自动下载的文件MIME类型,比如CSV、PDF等,避免Firefox弹出保存对话框(一旦弹出就会 fallback 到默认目录)

3. 修正后的代码示例

用FirefoxProfile(适合旧版Selenium)

from selenium import webdriver

def Firefox_Profile(download_directory):
    # 创建默认的Firefox配置实例,不要传入路径!
    profile = webdriver.FirefoxProfile()
    
    # 设置下载目录(必须是绝对路径)
    profile.set_preference("browser.download.dir", download_directory)
    # 启用自定义下载目录
    profile.set_preference("browser.download.folderList", 2)
    # 隐藏下载开始时的弹窗
    profile.set_preference("browser.download.manager.showWhenStarting", False)
    # 指定自动保存的文件MIME类型,按需添加
    profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv,application/pdf,application/octet-stream")
    
    # 可选:禁用PDF预览,直接下载
    profile.set_preference("pdfjs.disabled", True)
    
    driver = webdriver.Firefox(firefox_profile=profile)
    return driver

用FirefoxOptions(新版Selenium推荐,FirefoxProfile已被弃用)

如果你的Selenium是4.x+版本,官方推荐用FirefoxOptions替代FirefoxProfile,写法如下:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

def Firefox_Profile(download_directory):
    options = Options()
    
    # 设置下载相关偏好
    options.set_preference("browser.download.dir", download_directory)
    options.set_preference("browser.download.folderList", 2)
    options.set_preference("browser.download.manager.showWhenStarting", False)
    options.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv,application/pdf,application/octet-stream")
    options.set_preference("pdfjs.disabled", True)
    
    driver = webdriver.Firefox(options=options)
    return driver

4. 额外排查要点

  • 绝对路径检查:确保download_directory是绝对路径,比如C:/Users/xxx/Downloads/Custom或者/home/xxx/custom_downloads,相对路径会被Firefox忽略
  • 目录权限:确认指定的目录已经存在,且当前运行代码的用户有读写权限,否则Firefox会自动切换到默认Downloads文件夹
  • 配置验证:运行代码后,打开Firefox的about:preferences#general查看下载路径是否正确,有时候about:config里的配置可能被其他设置覆盖

这样调整后,应该就能让文件乖乖下载到你指定的目录里了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:03:54