Как можно изменить директорию, куда скачиваются файлы?

Подскажите, пожалуйста, как можно изменить стандартную директорию, куда скачиваются файлы, на свою заданную? Нашел только как это делается при создании драйвера стандартным способом java - How to set default download directory in selenium Chrome Capabilities? - Stack Overflow. Можно ли как-то это сделать проще с использованием selenide или ChromeDriverManager, использую следующий код для инициализации драйвера

ChromeDriverManager.getInstance().setup();
Configuration.browser = "chrome";

Для хрома надо настройку драйверу передать

        HashMap<String, Object> chromePrefs = new HashMap<String, Object>();

        chromePrefs.put("download.default_directory", "lalalal");
        chromePrefs.put("profile.default_content_settings.popups", 0);
        chromePrefs.put("download.directory_upgrade", true);

        ChromeOptions options = new ChromeOptions();
        options.setExperimentalOption("prefs", chromePrefs);
2 лайка

А как эту настройку в драйвер передать, если драйвер так объявлеется?

ChromeDriverManager.getInstance().setup();
Configuration.browser = "chrome";

Попробовал так

HashMap<String, Object> chromePrefs = new HashMap<String, Object>();

chromePrefs.put("download.default_directory", /home/michael/Documents");
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.directory_upgrade", true);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", chromePrefs);
ChromeDriverManager.getInstance().setup();
Configuration.browser = "chrome";

Ничего не изменилось, файлы также скачиваются в Downloads

В теме java - How to set default download directory in selenium Chrome Capabilities? - Stack Overflow передают настройку в сам драйвер.

String downloadFilepath = "/path/to/download";
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", downloadFilepath);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", chromePrefs);
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cap.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new ChromeDriver(cap);

А при таком объявлении как у меня не могу понять как передавать.

Это только говорит что вы хотите запустить хром.
Раз Селенид, то что-то типа этого:

import com.codeborne.selenide.WebDriverRunner;

WebDriverRunner.setWebDriver(new ChromeDriver(options));

2 лайка

Спасибо большое, так заработало

HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("download.default_directory", /home/michael/Documents");
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.directory_upgrade", true);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", chromePrefs);
ChromeDriverManager.getInstance().setup();
Configuration.browser = "chrome";
WebDriverRunner.setWebDriver(new ChromeDriver(options));