如何通过JSON将动态默认下载目录属性设置为ChromeDriver?

toiithl6  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(194)

我是用我自己的代码启动驱动程序,因此使用下面的代码来设置默认下载目录

DesiredCapabilities caps = DesiredCapabilities.chrome();
ChromeOptions co = new ChromeOptions();
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("download.default_directory", System.getProperty("user.dir")+"\\downloads\\); -------------Dynamic Path
co.setExperimentalOption("prefs", chromePrefs);
capabilities.merge(co);

WebDriver driver = new ChromeDriver(caps);

现在我们的组织已经提供了一个使用他们内置驱动程序的内部框架。设置功能的唯一方法是通过JSON配置文件。

{
    "capabilities": {
        "browserName": "chrome",
        "browserVersion": "81",
        "chromeOptions": {
            "args": [
                "--headless"
                "--start-maximized"
            ]
        }
        "prefs": {
            "profile.default_content_settings.popups": 0,
            "download.default_directory": "C:\Users\workspace\project\downloads\" -------------Path is Static
        },
        
    }
}

硬编码下载路径,并在我运行的每台机器上手动更改。有没有办法让这个路径像上面一样动态?

j2cgzkjk

j2cgzkjk1#

我在尝试将相对路径传递给我的firefox. opions时遇到了类似的问题。由于它似乎只接受绝对路径,我选择了一个解决方法:
我将相对路径转换为绝对路径,然后使用Firefox Options将其传递给浏览器首选项:

/* downloadPath=./src/test/resources/downloads -->from properties */    
File directory = new File(downloadPath); 
String absoluteDwnldPath = directory.getAbsolutePath();

稍后:

options.addPreference("browser.download.dir", absoluteDwnldPath);
options.addPreference("browser.download.useDownloadDir", true);

现在来谈谈你的问题:将json-file中的路径设置为相对路径,例如“./downloads”,然后编写代码以在内部获取绝对路径,就像上面一样,然后将选项传递给chrome首选项。
如果你交付了你的测试软件,那么在你的项目中似乎总是有一个下载目录,所以应该总是能找到它。

相关问题