Как загрузить и скачать файл с помощью Selenium
⚡ Умное резюме
Загрузите и скачайте файл, используя Selenium В рабочих процессах WebDriver для полей ввода используется встроенная функция sendKeys(), для диалоговых окон — AutoIt или Robot, а для команд CDP — команды CDP. Selenium 4. Укажите безопасные пути загрузки во время выполнения автоматизированных процессов.

Загрузка файлов в WebDriver осуществляется простым использованием метода sendKeys() в поле ввода выбора файла для указания пути к загружаемому файлу. В этом руководстве вы узнаете, как работать с загрузкой и скачиванием файлов с помощью WebDriver. Selenium ВебДрайвер.
Как загрузить файл в Selenium
Для этого раздела мы будем использовать https://demo.guru99.com/test/upload/ в качестве нашего тестового приложения. Этот сайт легко позволяет любому посетителю загружать файлы без необходимости регистрации.

Допустим, мы хотим загрузить файл «C:\newhtml.html». Наш код WebDriver должен выглядеть так, как показано ниже.
Импортировать org.openqa.selenium.*;
Импортировать org.openqa.selenium.firefox.FirefoxДрайверы;
открытый класс PG9 {
публичная статическая пустота главный(строка[] args) {
System.setProperty(“webdriver.gecko.driver”,“C:\\geckodriver.exe”);
строка baseUrl = “https://demo.guru99.com/test/upload/”;
Вебдрайвер драйвер = новый FirefoxДрайвер();
driver.get(baseUrl);
веб-элемент uploadElement = driver.findElement(By.id(“uploadfile_0”));
// Введите путь к файлу в поле ввода для выбора файла
uploadElement.sendKeys(“C:\\newhtml.html”);
// Установите флажок «Я принимаю условия предоставления услуг»
driver.findElement(By.id("условия")).click();
// Нажмите кнопку «Загрузить файл»
driver.findElement(By.name("Отправить")).click();
}
}
После запуска этого сценария вы сможете успешно загрузить файл и получить сообщение, подобное этому.
При загрузке файлов в WebDriver помните о двух важных моментах:
- Нет необходимости имитировать нажатие кнопки «Обзор». WebDriver автоматически вводит путь к файлу в текстовое поле выбора файла. элемент.
- При установке пути к файлу в вашем Java IDE, используйте правильный escape-символ для обратной косой черты.
Обработка диалоговых окон загрузки, не требующих ввода данных, с помощью AutoIt
Когда на странице используется пользовательская кнопка «Обзор» вместо стандартной. Функция sendKeys() не работает. В этом случае вы можете вызвать скрипт AutoIt из другого места. Selenium Введите путь к файлу в диалоговое окно операционной системы и нажмите Enter.
Сохраните приведенный ниже скрипт как upload.au3скомпилируйте его в загрузить.exeзатем вызовите его из Java после нажатия кнопки «Обзор».
WinWaitActive("Открыто")
Отправлять(“C:\newhtml.html”)
Отправлять("{ВХОДИТЬ}")
С JavaЗапустите вспомогательную функцию после нажатия кнопки «Обзор»:
Время выполнения.getRuntime().exec(“C:\\AutoIt\\upload.exe”);
Класс java.awt.Robot — это чистый...Java Альтернативный вариант, если AutoIt недоступен, хотя AutoIt более надежен в некоторых случаях. Windows потому что он ожидает появления диалога по названию.
Как скачать файл в Selenium Вебдрайвер
WebDriver не имеет доступа к диалоговым окнам загрузки. представляются браузерами, когда вы нажимаете ссылку или кнопку для скачивания. Однако мы можем обойти эти диалоговые окна, используя отдельную программу под названием «wget».
Что такое Wget?
Wget — небольшая и простая в использовании программа командной строки, используемая для автоматизации загрузок.. По сути, мы будем получать доступ к Wget из нашего сценария WebDriver для выполнения процесса загрузки.
Настройка Wget
Шаг 1) На диске C создайте новую папку и назовите ее «Wget».
Скачать wget.exe отсюда и поместите его в папку Wget, которую вы создали на предыдущем шаге.
Шаг 2) Откройте Run, нажав Windows Нажмите клавишу + «R»; введите «cmd» и нажмите ОК.
Введите команду «cd /», чтобы перейти в корневой каталог.
Шаг 3) Введите команду, чтобы проверить, работает ли данная конфигурация.
Кажется, возникла проблема с записью на диск C.
Шаг 4) Перед выполнением кода необходимо отладить ошибки wget в командной строке. Selenium WebDriver. Эти ошибки будут сохраняться в Eclipse и сообщения об ошибках будут не такими информативными. Лучше всего сначала заставить wget работать в командной строке. Если он работает в командной строке, он обязательно будет работать и в... Eclipse.
В нашем примере, как показано на шаге 3, возникла проблема с записью на диск C. Давайте изменим место сохранения загрузок на диск D и проверим результаты.
Messenger был успешно загружен.
Прежде чем продолжить, не забудьте удалить загруженный файл.
Использование WebDriver и Wget
В следующем примере мы воспользуемся WebDriver и wget для загрузки популярного программного обеспечения для чата Yahoo. MessengerНаша база URL должен быть https://demo.guru99.com/test/yahoo.html.
Шаг 1) Импортируйте пакет «java.io.IOException», потому что нам придется перехватывать IOException позже на шаге 4.
Шаг 2) Используйте метод getAttribute(), чтобы получить значение атрибута "href" ссылки для скачивания и сохранить его в виде строковой переменной. В данном случае мы назвали переменную "sourceLocation".
Шаг 3) Настройте синтаксис для wget, используя следующую команду.
Шаг 4) Инициируйте процесс загрузки, вызвав wget из нашего кода WebDriver.
Подводя итог всему этому, ваш код WebDriver может выглядеть так, как показано ниже.
Импортировать java.io.IOException;
Импортировать org.openqa.selenium.*;
Импортировать org.openqa.selenium.firefox.FirefoxДрайверы;
открытый класс PG8 {
публичная статическая пустота главный(строка[] args) {
System.setProperty(“webdriver.gecko.driver”,“C:\\geckodriver.exe”);
строка baseUrl = “https://demo.guru99.com/test/yahoo.html”;
Вебдрайвер драйвер = новый FirefoxДрайвер();
driver.get(baseUrl);
веб-элемент downloadButton = driver.findElement(By.id(“messenger-download”));
строка sourceLocation = downloadButton.getAttribute(“href”);
строка wget_command = “cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate “ + sourceLocation;
стараться {
Разработка exec = Runtime.getRuntime().exec(wget_command);
Int exitVal = exec.waitFor();
System.out.println («Цена выхода:» + exitVal);
} поймать (Прерванное исключение | Исключение IO бывший) {
System.out.println(ex.toString());
}
driver.close();
}
}
После выполнения этого кода проверьте диск D и убедитесь, что Yahoo Messenger установщик был успешно загружен туда.
Настройка пользовательского пути загрузки с помощью Selenium 4 CDP
Selenium В пункте 4 представлен протокол Chrome DevTools, позволяющий управлять процессом загрузки файлов в браузере без использования сторонних инструментов. Приведенный ниже фрагмент кода направляет все загрузки в пользовательскую папку и пропускает запрос «Сохранить как», поэтому файлы попадают туда, куда ожидает тест.
Карта<строка,объект> параметры = новый HashMap<>();
params.put("поведение", "разрешать");
params.put(“downloadPath”, “D:\\selenium-downloads”);
driver.executeCdpCommand(“Page.setDownloadBehavior”, параметры);
драйвер.получить(“https://demo.guru99.com/test/yahoo.html”);
driver.findElement(By.id(“messenger-download”)).click();
Проверить успешность загрузки можно, запросив в целевом каталоге ожидаемое имя файла и проверив его размер, что делает проверку детерминированной и не требует использования внешних скриптов.












