Chrome 117升级后Selenium下载文件弹出「另存为」对话框求助
修复Chrome 117版本下Selenium下载弹出「另存为」对话框的问题
Chrome升级到117后,即便配置了下载偏好设置,Selenium下载文件仍会弹出系统级「另存为」对话框,试试下面这些解决办法:
1. 严格匹配Chrome和ChromeDriver版本
Chrome 117对应的ChromeDriver必须是117.0.5938.88/89这个小版本,主版本一致但小版本不匹配也会导致配置失效。去官方渠道重新下载对应版本的ChromeDriver替换现有文件。
2. 补充Chrome 117专属的下载配置
在你现有的prefs配置里添加以下参数:
// 禁用下载保护提示 prefs.put("safebrowsing.disable_download_protection", true); // 清空自动打开的文件扩展名列表,强制所有文件下载 prefs.put("download.extensions_to_open", "");
注意要确保download.prompt_for_download = false的配置在ChromeOptions初始化前完成,顺序错误可能导致设置不生效。
3. 排查无痕模式的干扰
你当前启用了--incognito无痕模式,Chrome在无痕模式下会重置部分偏好设置。先临时移除这个参数测试,如果问题消失,就给无痕模式指定临时用户目录来加载配置:
chromeOptions.addArguments("--incognito"); // 指定临时用户目录,让无痕模式读取下载配置 chromeOptions.addArguments("--user-data-dir=" + System.getProperty("java.io.tmpdir") + "/chrome_temp_profile");
4. 特殊文件类型单独处理
如果下载的是PDF文件,除了plugins.always_open_pdf_externally,再加一行配置:
prefs.put("pdfjs.disabled", true);
强制Chrome直接下载PDF,而非在浏览器内打开,避免触发额外的保存提示。
5. 确保下载目录有权限
先确认代码里的downloads目录存在且具备读写权限,最好在代码中添加目录创建逻辑:
Path downloadPath = Paths.get("downloads"); if (!Files.exists(downloadPath)) { Files.createDirectories(downloadPath); } String downloadDir = downloadPath.toAbsolutePath().toString();
若目录不存在,Chrome会自动 fallback到默认下载路径,进而弹出「另存为」对话框。
内容的提问来源于stack exchange,提问作者Prophet
相关产品推荐
相关产品推荐

