ChromeDriver默认下载目录修改无效问题求助
解决ChromeDriver下载目录不生效的问题
针对你遇到的修改download.default_directory后,文件仍保存到默认Downloads文件夹的问题,结合你的代码和环境,下面是具体的排查和解决步骤:
问题根源分析
- 相对路径不可靠:你使用的
./downloads是相对路径,Katalon Studio的工作目录可能和你预期的不一致,导致Chrome无法识别正确的目标路径。 - Windows路径格式问题:Windows系统的路径分隔符是反斜杠
\,但Chrome的偏好设置要求使用正斜杠/或者转义后的反斜杠\\,直接用getPath()返回的路径可能无法被正确解析。 - PDF预览干扰:Chrome默认会内置预览PDF文件,不会触发下载流程,自然不会使用你设置的下载目录。
修复后的代码示例
修改WebDriverUtils.groovy
package me.mikewarren.myCaseScraper.utils import org.openqa.selenium.WebDriver import org.openqa.selenium.chrome.ChromeDriver import org.openqa.selenium.chrome.ChromeOptions import com.kms.katalon.core.webui.driver.DriverFactory import com.kms.katalon.core.configuration.RunConfiguration public final class WebDriverUtils { public static void SetUpDriver() { // 获取项目根目录的绝对路径,拼接下载目录 String projectDir = RunConfiguration.getProjectDir() File downloadDir = new File(projectDir + "/downloads") if (!downloadDir.exists()) { downloadDir.mkdirs(); } // 转换为Chrome支持的路径格式(正斜杠) String chromeDownloadPath = downloadDir.getAbsolutePath().replace("\\", "/") System.setProperty('webdriver.chrome.driver', DriverFactory.getChromeDriverPath()) ChromeOptions options = new ChromeOptions(); options.setExperimentalOption('prefs', [ 'download.prompt_for_download' : false, // 改用布尔值而非字符串,避免类型不匹配 'download.default_directory' : chromeDownloadPath, 'plugins.always_open_pdf_externally' : true, // 强制PDF直接下载,不预览 'download.directory_upgrade' : true // 允许Chrome优先使用自定义下载目录 ]); WebDriver driver = new ChromeDriver(options); driver.manage().window().maximize(); DriverFactory.changeWebDriver(driver); } public static void CloseDriver() { DriverFactory.closeWebDriver(); } }
关键修改说明
- 改用绝对路径:通过
RunConfiguration.getProjectDir()获取Katalon项目根目录,确保下载目录路径明确无歧义。 - 修正路径格式:将Windows系统的反斜杠替换为正斜杠,适配Chrome偏好设置的要求。
- 禁用PDF预览:添加
plugins.always_open_pdf_externally: true,强制Chrome直接下载PDF文件,触发下载目录逻辑。 - 修复参数类型:将原代码中字符串类型的
'false'改为布尔值false,确保Chrome能正确识别配置项。 - 启用目录升级:
download.directory_upgrade: true确保Chrome优先使用自定义目录,而非保留旧的默认路径。
额外注意事项
- 启用
NewTestListener.groovy中AfterTestCase方法的WebDriverUtils.CloseDriver(),避免Driver实例残留导致的配置冲突。 - 运行测试前,清理Chrome旧下载缓存或重启Katalon Studio,确保新配置生效。
内容的提问来源于stack exchange,提问作者Mike Warren
相关产品推荐
相关产品推荐

