如何通过Karate DSL配置Chrome浏览器的默认下载目录?
解决Karate DSL中Chrome指定下载目录无效的问题
你的配置错误在于Chrome实验选项的格式不正确,直接将路径作为prefs的值是无效的。需要通过experimentalOptions正确配置Chrome的偏好设置,明确指定下载目录及相关参数。
正确配置方式
在Karate中配置Chrome Driver时,需通过experimentalOptions传入prefs对象,设置download.default_directory,同时建议关闭下载提示、自动允许特定文件类型下载,避免弹窗干扰测试:
Feature: download json @debug Scenario: download json * def downloadDir = 'C:\\workspaces\\gs\\src\\test\\java\\ui_gs\\qa' * configure driver = { type: 'chrome', experimentalOptions: { prefs: { 'download.default_directory': downloadDir, 'download.prompt_for_download': false, 'download.directory_upgrade': true, 'safebrowsing.enabled': true } }, start: true } Given driver 'http://localhost:52330/src/test/java/ui_gs/encrypt_json.html' And input('#rol','adm') And input('#usuario','users') When click('#button_json') Then match text('#user_AES') != 'null' # 可选:验证文件是否下载到指定目录 * def targetFile = downloadDir + '/your-target-filename.json' * match karate.exists(targetFile) == true
关键说明
- 路径转义:Windows系统路径需用双反斜杠
\\,或直接使用正斜杠/(如'C:/workspaces/gs/src/test/java/ui_gs/qa'),避免转义错误。 - experimentalOptions:无需加
--前缀,Karate会自动处理Chrome的实验选项配置,替代你之前错误的addOptions写法。 - 额外prefs参数:
download.prompt_for_download: false 关闭下载确认弹窗download.directory_upgrade: true 允许浏览器升级下载目录权限safebrowsing.enabled: true 跳过安全检查,避免拦截下载
验证步骤
测试完成后,可通过karate.exists()方法检查指定目录下是否存在目标文件,确认下载路径生效。
内容的提问来源于stack exchange,提问作者jorgeleon79
相关产品推荐
相关产品推荐

