Выберите каталог для загрузки файлов с selenium в chrome

#java #selenium #selenium-chromedriver

Вопрос:

Мне нужно загрузить файлы XLSX с помощью Java Selenium в chrome, но я не могу выбрать папку для загрузки файлов. Я перепробовал все другие альтернативы, которые я нашел здесь, но из того, что я заметил, все остальные уже устарели. Вот мой код:

         String downloadFilepath = "D:\down\";

        HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
        chromePrefs.put("profile.default_content_settings.popups", 0);
        chromePrefs.put("prompt_for_download", false);
        chromePrefs.put("directory_upgrade", true);
        chromePrefs.put("download.default_directory", downloadFilepath);
        ChromeOptions options = new ChromeOptions();
        options.setExperimentalOption("prefs", chromePrefs);
        options.addArguments("--disable-notifications");
        DesiredCapabilities cap = DesiredCapabilities.chrome();
        cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
        cap.setCapability(ChromeOptions.CAPABILITY, options);
        System.setProperty("webdriver.chrome.driver", "C:\chromedriver.exe");
        driver = new ChromeDriver(options);
 

Комментарии:

1. Я использую: prefs.put(«каталог загрузки.по умолчанию», каталог загрузки); Другие параметры не требуются. (Убедитесь, что папка существует и что у вас есть соответствующие разрешения… Я рекомендую папку в папке текущего пользователя.)

2. К сожалению, для меня это не сработало. Даже когда я указываю папку проекта или даже папку внутри стандартной папки Windows (загрузки). Я исключил все остальные варианты и оставил только тот, о котором вы упомянули, но он не работает для меня.

Ответ №1:

Мне удалось решить эту проблему. Я скачал последнюю стабильную версию chromedriver, вышедшую в июле (моя была с июня), и поместил код ниже.

 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);
WebDriver driver = new ChromeDriver(options);