如何在Selenium无痕模式下绕过Chrome文件资源管理器实现自动下载
解决Chrome无痕模式下Selenium指定路径自动下载失效问题
针对Chrome 119.0.6045.159版本,开启无痕模式后常规下载偏好设置失效、弹出文件资源管理器的问题,可通过以下调整解决:
关键调整点
- 禁用Chrome新版本的下载气泡提示功能,该功能在无痕模式下会强制触发下载确认弹窗
- 确保
download.prompt_for_download使用**布尔值false**而非字符串类型,无痕模式下对参数类型校验更严格 - 可选:关闭安全浏览检查,避免额外的下载拦截弹窗
完整代码示例
ChromeOptions options = new ChromeOptions(); // 指定下载路径 String downloadDirectory = System.getProperty("user.home") + "/Downloads"; HashMap<String, Object> chromePrefs = new HashMap<>(); chromePrefs.put("download.default_directory", downloadDirectory); chromePrefs.put("profile.default_content_settings.popups", 0); // 使用布尔值而非字符串,无痕模式下更可靠 chromePrefs.put("download.prompt_for_download", Boolean.FALSE); // 可选:关闭安全浏览检查,避免下载拦截 chromePrefs.put("safebrowsing.enabled", Boolean.FALSE); options.setExperimentalOption("prefs", chromePrefs); // 开启无痕模式 options.addArguments("--incognito"); // 禁用下载气泡,解决无痕模式下的弹窗问题 options.addArguments("--disable-features=DownloadBubble,DownloadBubbleV2"); driver = new ChromeDriver(options);
原理说明
Chrome无痕模式会加载独立的临时配置环境,常规模式下的部分偏好设置会被重置。添加--disable-features=DownloadBubble,DownloadBubbleV2参数可以强制关闭新版本Chrome引入的下载气泡交互,同时使用布尔类型的参数能确保在无痕环境下被正确识别,从而实现指定路径自动下载且无弹窗。
内容的提问来源于stack exchange,提问作者sschandra
相关产品推荐
相关产品推荐

