0

0

Selenium 4.12+ 下启用文件下载功能的完整配置指南

花韻仙語

花韻仙語

发布时间:2026-02-16 08:57:10

|

822人浏览过

|

来源于php中文网

原创

Selenium 4.12+ 下启用文件下载功能的完整配置指南

本文详解如何在 Selenium 4.12 及以上版本中正确启用浏览器下载管理能力,解决 WebDriverException: You must enable downloads 错误,并演示获取可下载文件列表、触发下载及保存文件的全流程。

本文详解如何在 selenium 4.12 及以上版本中正确启用浏览器下载管理能力,解决 `webdriverexception: you must enable downloads` 错误,并演示获取可下载文件列表、触发下载及保存文件的全流程。

在 Selenium 4.12+ 版本中,原生支持了服务端托管式文件下载管理(Managed Downloads),但该功能默认关闭。仅配置 Chrome 的 download.default_directory 等偏好设置(prefs)已不再足够——必须显式启用下载管理能力,否则调用 driver.get_downloadable_files() 将抛出 WebDriverException: You must enable downloads in order to work with downloadable files.。

✅ 正确启用下载功能的三要素

要成功使用 get_downloadable_files() 和 download_file(),需同时满足以下三点:

  1. 客户端启用下载能力:通过 options.enable_downloads = True 设置 WebDriver 选项;
  2. 服务端启用托管下载(适用于 Remote WebDriver / Grid):启动 Selenium Server 或 Grid 节点时添加 --enable-managed-downloads true 参数;
  3. 保留传统下载路径配置(可选但推荐):仍需设置 download.default_directory 以确保浏览器 UI 下载行为一致(如手动点击下载链接时生效)。

⚠️ 注意:若使用本地 webdriver.Chrome()(非 Remote),第 2 点不适用;但 enable_downloads = True 仍是强制要求,且必须在初始化 driver 前设置。

95Shop仿醉品商城
95Shop仿醉品商城

95Shop可以免费下载使用,是一款仿醉品商城网店系统,内置SEO优化,具有模块丰富、管理简洁直观,操作易用等特点,系统功能完整,运行速度较快,采用ASP.NET(C#)技术开发,配合SQL Serve2000数据库存储数据,运行环境为微软ASP.NET 2.0。95Shop官方网站定期开发新功能和维护升级。可以放心使用! 安装运行方法 1、下载软件压缩包; 2、将下载的软件压缩包解压缩,得到we

下载

✅ 完整可运行示例(本地 Chrome)

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os

# 1. 配置 Chrome 选项
options = Options()
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--disable-popup-blocking")

# ✅ 关键:启用 Selenium 托管式下载(必需)
options.enable_downloads = True

# ✅ 传统下载路径(兼容手动下载与 UI 行为)
download_dir = os.path.abspath("/Users/abderrahim/Documents/cv_apec")
options.add_experimental_option(
    "prefs",
    {
        "download.default_directory": download_dir,
        "download.prompt_for_download": False,
        "download.directory_upgrade": True,
        "safebrowsing.enabled": False,
    },
)

# 2. 启动浏览器
driver = webdriver.Chrome(options=options)

try:
    # 访问含下载链接的页面(示例)
    driver.get("https://example.com/resume.pdf")  # 或触发下载的页面

    # 3. 获取当前页面所有可被 Selenium 识别的待下载文件(需页面已触发下载请求)
    downloadable_files = driver.get_downloadable_files()
    print(f"发现 {len(downloadable_files)} 个待下载文件:{downloadable_files}")

    # 4. 下载第一个文件到指定目录(自动重命名避免冲突)
    if downloadable_files:
        target_path = os.path.join(download_dir, "fetched_resume.pdf")
        driver.download_file(downloadable_files[0], target_path)
        print(f"✅ 已下载至:{target_path}")

finally:
    driver.quit()

⚠️ 常见问题与注意事项

  • get_downloadable_files() 返回空列表?
    请确认:① 页面中已实际触发下载请求(如点击 或提交表单);② 下载请求由当前会话发起(跨域或 iframe 内下载可能不可见);③ 浏览器未拦截弹窗或安全策略阻止下载。

  • Remote WebDriver / Grid 用户必看
    启动 Selenium Standalone 或 Node 时,必须添加参数

    java -jar selenium-server-4.x.jar standalone --enable-managed-downloads true

    或在 Node 配置中加入 "enableManagedDownloads": true。

  • 不支持旧版 Selenium(:
    enable_downloads 属性和 get_downloadable_files() 是 4.12+ 新增 API,升级命令:

    pip install --upgrade selenium
  • 替代方案(不依赖托管下载)
    若因环境限制无法启用托管下载,可改用「监听下载目录变化」方式(如轮询 os.listdir() + 文件大小稳定判断),但该方法鲁棒性较低,不推荐用于生产环境。

✅ 总结

Selenium 的现代下载管理是一套协同机制:客户端开启 options.enable_downloads 是前提,服务端配合 --enable-managed-downloads 是保障,而传统 prefs 配置则是用户体验兜底。三者结合,才能稳定调用 get_downloadable_files() 与 download_file(),实现自动化文件抓取闭环。务必检查 Selenium 版本并按规范配置,即可彻底解决下载启用异常问题。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

952

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

779

2023.11.06

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

53

2025.12.13

iframe写法有哪些
iframe写法有哪些

iframe写法有基本Iframe写法、嵌套Iframe写法、自适应宽高的Iframe写法、带有样式和属性的Iframe写法、内联Iframe写法和使用JavaScript动态创建Iframe写法。种写法都有自己的特点和适用场景。根据实际需求,选择合适的写法可以实现所需的功能和效果。

487

2023.10.19

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

149

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

104

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

35

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

14

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

19

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号