ChromeDriver 117隐身模式下Selenium下载文件弹出提示的问题
Chrome 117隐身模式下Selenium自动下载弹窗问题解决办法
Chrome 117版本对隐身模式的下载权限机制做了调整,导致旧版Selenium(3.141.59)原本的下载偏好配置无法在隐身模式下生效,进而弹出下载提示框中断自动化流程。以下是两种可行的解决思路:
方案一:补充隐身模式兼容的偏好配置
在原有下载配置基础上,添加针对隐身模式的额外参数,强制跳过下载提示并启用目录升级:
修改后的代码如下:
package com.test; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; 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<String,Object>(); ChromeOptions options = new ChromeOptions(); // 原有下载配置 prefs.put("download.default_directory", "D:\\driver"); prefs.put("download.prompt_for_download", false); prefs.put("profile.default_content_settings.popups", 0); // 新增兼容隐身模式的配置 prefs.put("download.directory_upgrade", true); prefs.put("profile.default_content_setting_values.automatic_downloads", 1); prefs.put("safebrowsing.enabled", false); // 关闭安全浏览检查,避免拦截下载 options.addArguments("incognito"); options.setExperimentalOption("prefs",prefs); WebDriver driver = new ChromeDriver(options); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.manage().window().maximize(); driver.get("https://www.selenium.dev/downloads/"); WebElement e = driver.findElement(By.linkText("4.12.1 (September 4, 2023)")); e.click(); driver.close(); } }
方案二:升级Selenium版本到4.x
Selenium 3.141.59是较旧的稳定版,对Chrome 117这类新版本浏览器的兼容性有限。升级到Selenium 4.x版本后,其对Chrome DevTools Protocol(CDP)的支持更完善,能更好地适配新版Chrome的隐身模式配置,从根源上避免这类版本兼容问题。
内容的提问来源于stack exchange,提问作者SKV
相关产品推荐
相关产品推荐

