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

如何在Selenium+geckodriver+Firefox中设置指定下载路径?

Firefox Selenium 指定下载路径无效的修复方案

你的问题出在错误地用命令行参数(add_argument)配置Firefox下载偏好,Firefox的下载路径等设置属于浏览器内部偏好,需要用set_preference方法配置,而非add_argument。以下是具体修改点和完整代码:

核心修改点

  • 替换所有下载相关的add_argument为set_preference:这些配置是Firefox about:config中的偏好项,不是启动命令参数
  • 使用绝对路径作为下载目录:相对路径可能因工作目录问题无法被正确识别
  • 补充browser.download.useDownloadDir偏好:明确启用自定义下载目录
  • 可选:添加pdfjs.disabled避免PDF在浏览器内打开(如果下载的是PDF文件)

修改后的完整代码

import time
import os
from selenium import webdriver
from selenium.webdriver import FirefoxOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service as FirefoxService
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 改为绝对路径,可根据实际情况替换
download_dir = os.path.abspath("/your/absolute/download/path") 

firefox_options = FirefoxOptions()
firefox_options.add_argument("--headless")

# 配置下载偏好(替换原来的add_argument)
firefox_options.set_preference("browser.download.folderList", 2)  # 2=自定义路径
firefox_options.set_preference("browser.download.manager.showWhenStarting", False)
firefox_options.set_preference("browser.download.dir", download_dir)
firefox_options.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
firefox_options.set_preference("browser.download.useDownloadDir", True)
# 如果下载PDF,添加这个避免在浏览器打开
firefox_options.set_preference("pdfjs.disabled", True)

# 配置WebDriver
service = FirefoxService("/usr/local/bin/geckodriver")
driver = webdriver.Firefox(service=service, options=firefox_options)

额外注意事项

  • 确保运行Selenium的用户对目标下载路径有读写权限,比如/root目录下的路径要确认当前用户拥有操作权限
  • 如果仍有问题,可检查目标路径是否存在,不存在的话提前用os.makedirs(download_dir, exist_ok=True)创建

内容的提问来源于stack exchange,提问作者Сергей Корягин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:22:05