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

webdriver
java
selenide
Теги: #<Tag:0x00007fedb8fbb320> #<Tag:0x00007fedb8fbb050> #<Tag:0x00007fedb8fbad80>

(My Luk) #1

Подскажите, пожалуйста, как можно изменить стандартную директорию, куда скачиваются файлы, на свою заданную? Нашел только как это делается при создании драйвера стандартным способом https://stackoverflow.com/questions/34515328/how-to-set-default-download-directory-in-selenium-chrome-capabilities. Можно ли как-то это сделать проще с использованием selenide или ChromeDriverManager, использую следующий код для инициализации драйвера

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

как автоматизировать проверку что файл скачался и потом удалить его?
(Vasiliy Rakshin) #2

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

        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);

(My Luk) #3

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

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

В теме https://stackoverflow.com/questions/34515328/how-to-set-default-download-directory-in-selenium-chrome-capabilities передают настройку в сам драйвер.

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);

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


(Vasiliy Rakshin) #4

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

import com.codeborne.selenide.WebDriverRunner;

WebDriverRunner.setWebDriver(new ChromeDriver(options));


(My Luk) #5

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

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));

Переопределение папки Download в Selenide