Chrome 117+ 在无痕模式下禁用下载弹窗的完整解决方案

老浩大大_4294

老浩大大_4294

2026-11-11

279人浏览

原创

Chrome 117+ 在无痕模式下禁用下载弹窗的完整解决方案

Chrome 117 起,无痕模式(incognito)默认启用新版下载浮层(download-bubble),导致 Selenium 自动下载失败并弹出保存提示;需通过 localState 禁用 download-bubble 和 download-bubble-v2 两个实验性功能方可恢复静默下载。

chrome 117 起,无痕模式(incognito)默认启用新版下载浮层(download-bubble),导致 selenium 自动下载失败并弹出保存提示;需通过 `localstate` 禁用 `download-bubble` 和 `download-bubble-v2` 两个实验性功能方可恢复静默下载。

自 Chrome 117 版本起,Google 引入了基于 Chromium 实验性标志(flags)的全新下载 UI —— Download Bubble(含 v1 和 v2),尤其在无痕模式下默认强制启用。该机制会覆盖传统 download.default_directory 和 download.prompt_for_download 的配置逻辑,导致 Selenium 无法自动保存文件,而是弹出系统级下载确认对话框,从而中断自动化流程。

虽然关闭 incognito 模式可临时绕过此问题(因普通模式下 bubble 默认未启用),但真实测试场景常需复现用户隐私浏览行为,因此必须在保留无痕模式的前提下修复下载逻辑。

✅ 正确解法是:通过 ChromeOptions 的 localState 实验性选项,显式禁用相关 flag:

Bird Chrome
Bird Chrome

使用 bird 搭配 Chrome cookies 读取、搜索并在 X/Twitter 上谨慎发布内容。

下载
import java.util.*;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class TestDownload {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "D:\driver\117\chromedriver.exe");

        Map<string object> prefs = new HashMap();
        prefs.put("download.default_directory", "D:\driver");
        prefs.put("download.prompt_for_download", false);
        prefs.put("profile.default_content_settings.popups", 0);

        ChromeOptions options = new ChromeOptions();
        options.addArguments("--incognito"); // 推荐使用带 "--" 前缀的标准写法
        options.setExperimentalOption("prefs", prefs);

        // ? 关键修复:禁用 download-bubble 相关实验特性
        Map<string object> localState = new HashMap();
        List<string> experiments = Arrays.asList("download-bubble@2", "download-bubble-v2@2");
        localState.put("browser.enabled_labs_experiments", experiments);
        options.setExperimentalOption("localState", localState);

        WebDriver driver = new ChromeDriver(options);
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.manage().window().maximize();

        driver.get("https://www.selenium.dev/downloads/");
        WebElement downloadLink = driver.findElement(By.linkText("4.12.1 (September 4, 2023)"));
        downloadLink.click();

        // ✅ 建议添加等待与验证逻辑(生产环境必备)
        try {
            Thread.sleep(5000); // 简单等待下载完成(实际建议轮询文件系统)
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
        driver.quit();
    }
}</string></string></string>

⚠️ 注意事项:

  • localState 中的 @2 表示「禁用」状态(@1 为启用,@2 为禁用),这是 Chromium flags 的标准编码约定;
  • 必须使用 --incognito(带双横线)而非 "incognito",以确保参数被正确识别;
  • Selenium 3.141.59 对 localState 支持有限,强烈建议升级至 Selenium 4.8.0 或更高版本(如答案中所示),否则 setExperimentalOption("localState", ...) 可能被忽略;
  • 验证方式:启动浏览器后访问 chrome://flags/#download-bubble,确认两项 flag 显示为 Disabled(可通过调试器断点 + 手动打开验证);
  • 若仍失败,请检查目标 URL 是否触发跨域下载(如 iframe 内嵌或 blob: 协议),此类场景需额外处理 Content-Disposition 或启用 --unsafely-treat-insecure-origin-as-secure(仅限测试环境)。

总结:Chrome 117+ 的无痕下载问题本质是 UI 层级变更,非 Selenium 配置失效。通过 localState 精准控制底层实验特性,即可在保持测试真实性的同时,稳定实现自动化文件下载。

相关专题

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

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

2023.08.11

2946

5

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

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

2023.11.06

6119

7

Chrome开启无痕模式
Chrome开启无痕模式

本专题整合了Chrome无痕模式开启相关内容,阅读专题下面的文章了解更多详细教程。

2026.03.24

4387

22

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

60

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

40

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

40

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

60

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

40

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

60

16

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十三期_前端开发
第二十三期_前端开发

共98课时 | 12.1万人学习

Node.js基础教程
Node.js基础教程

共8课时 | 1.5万人学习

nodejs开发基础教程
nodejs开发基础教程

共15课时 | 4.9万人学习