Как загрузить и скачать файл с помощью Selenium

⚡ Умное резюме

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

  • 📤 Метод загрузки: Используйте функцию sendKeys() для элемента ввода файла, чтобы передать абсолютный путь к файлу без нажатия кнопки "Обзор".
  • 📥 Путь для скачивания: Настройте пользовательский каталог для загрузок через ChromeOptions или CDP Page.setDownloadBehavior. Selenium 4.
  • 🪟 Встроенные диалоги: Запускайте скрипты AutoIt или java.awt.Robot, когда средство выбора файлов операционной системы блокирует взаимодействие с WebDriver.
  • 🤖 Помощь ИИ: Генеративный ИИ предлагает варианты выбора, создает тестовые файлы данных и автоматически проверяет целостность загруженных файлов.
  • 🛡️ Проверка валидации: Подтвердите успешную загрузку с помощью ответных сообщений и проверьте загрузку, используя сравнение размера файла или контрольной суммы.

Как загрузить и скачать файл с помощью Selenium

Загрузка файлов в WebDriver осуществляется простым использованием метода sendKeys() в поле ввода выбора файла для указания пути к загружаемому файлу. В этом руководстве вы узнаете, как работать с загрузкой и скачиванием файлов с помощью WebDriver. Selenium ВебДрайвер.

Как загрузить файл в Selenium

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

Загрузить файл в Selenium
Обработка всплывающего окна загрузки файла в Selenium Вебдрайвер

Допустим, мы хотим загрузить файл «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();
}
}

После запуска этого сценария вы сможете успешно загрузить файл и получить сообщение, подобное этому.

Загрузить файл в Selenium

При загрузке файлов в WebDriver помните о двух важных моментах:

  1. Нет необходимости имитировать нажатие кнопки «Обзор». WebDriver автоматически вводит путь к файлу в текстовое поле выбора файла. элемент.
  2. При установке пути к файлу в вашем Java IDE, используйте правильный escape-символ для обратной косой черты.

Загрузить файл в Selenium

Обработка диалоговых окон загрузки, не требующих ввода данных, с помощью AutoIt

Когда на странице используется пользовательская кнопка «Обзор» вместо стандартной. Функция sendKeys() не работает. В этом случае вы можете вызвать скрипт AutoIt из другого места. Selenium Введите путь к файлу в диалоговое окно операционной системы и нажмите Enter.

Сохраните приведенный ниже скрипт как upload.au3скомпилируйте его в загрузить.exeзатем вызовите его из Java после нажатия кнопки «Обзор».

; upload.au3 – ожидает появления диалогового окна «Открыть» и вводит путь к файлу.
WinWaitActive("Открыто")
Отправлять(“C:\newhtml.html”)
Отправлять("{ВХОДИТЬ}")

С JavaЗапустите вспомогательную функцию после нажатия кнопки «Обзор»:

driver.findElement(By.id(“browseBtn”)).click();
Время выполнения.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, которую вы создали на предыдущем шаге.

Настройка Wget

Шаг 2) Откройте Run, нажав Windows Нажмите клавишу + «R»; введите «cmd» и нажмите ОК.

Настройка Wget

Введите команду «cd /», чтобы перейти в корневой каталог.

Настройка Wget

Шаг 3) Введите команду, чтобы проверить, работает ли данная конфигурация.

cmd /c C:\\Wget\\wget.exe -PC: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Настройка Wget

Кажется, возникла проблема с записью на диск C.

Шаг 4) Перед выполнением кода необходимо отладить ошибки wget в командной строке. Selenium WebDriver. Эти ошибки будут сохраняться в Eclipse и сообщения об ошибках будут не такими информативными. Лучше всего сначала заставить wget работать в командной строке. Если он работает в командной строке, он обязательно будет работать и в... Eclipse.

В нашем примере, как показано на шаге 3, возникла проблема с записью на диск C. Давайте изменим место сохранения загрузок на диск D и проверим результаты.

cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Настройка Wget

Messenger был успешно загружен.

Прежде чем продолжить, не забудьте удалить загруженный файл.

Использование WebDriver и Wget

В следующем примере мы воспользуемся WebDriver и wget для загрузки популярного программного обеспечения для чата Yahoo. MessengerНаша база URL должен быть https://demo.guru99.com/test/yahoo.html.

Использование WebDriver и Wget

Шаг 1) Импортируйте пакет «java.io.IOException», потому что нам придется перехватывать IOException позже на шаге 4.

Использование WebDriver и Wget

Шаг 2) Используйте метод getAttribute(), чтобы получить значение атрибута "href" ссылки для скачивания и сохранить его в виде строковой переменной. В данном случае мы назвали переменную "sourceLocation".

Использование WebDriver и Wget

Шаг 3) Настройте синтаксис для wget, используя следующую команду.

Использование WebDriver и Wget

Шаг 4) Инициируйте процесс загрузки, вызвав wget из нашего кода WebDriver.

Использование WebDriver и Wget

Подводя итог всему этому, ваш код 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 установщик был успешно загружен туда.

Использование WebDriver и Wget

Настройка пользовательского пути загрузки с помощью Selenium 4 CDP

Selenium В пункте 4 представлен протокол Chrome DevTools, позволяющий управлять процессом загрузки файлов в браузере без использования сторонних инструментов. Приведенный ниже фрагмент кода направляет все загрузки в пользовательскую папку и пропускает запрос «Сохранить как», поэтому файлы попадают туда, куда ожидает тест.

ChromeDriver драйвер = новый ChromeDriver ();
Карта<строка,объект> параметры = новый 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();

Проверить успешность загрузки можно, запросив в целевом каталоге ожидаемое имя файла и проверив его размер, что делает проверку детерминированной и не требует использования внешних скриптов.

Часто задаваемые вопросы (FAQ)

Selenium вызывает sendKeys() на Элемент с абсолютным путем к файлу. Браузер заполняет поле напрямую, поэтому не открывается средство выбора файлов операционной системы и не требуется нажимать кнопку "Обзор".

Если на странице отсутствует поле ввода файла, используйте AutoIt on. Windows или класс java.awt.Robot. Эти инструменты вводят путь в активное диалоговое окно операционной системы и нажимают Enter после нажатия кнопки «Обзор».

Вызовите executeCdpCommand(“Page.setDownloadBehavior”, params), установив поведение allow и downloadPath на вашу папку. Selenium Параметр 4 перенаправляет команду в инструменты разработчика Chrome, и запрос на сохранение пропускается.

Да. Искусственный интеллект считывает вашу форму загрузки, предлагает селекторы, генерирует файлы границ, такие как пустые, слишком большие или с неправильным расширением, и записывает блок sendKeys(). Это сокращает время настройки и выявляет граничные случаи, которые часто упускают из виду тестировщики-люди.

Инструменты AI Опрашивает целевую папку, сравнивает размер файла и контрольную сумму с ожидаемыми значениями и отмечает несоответствия. Модели компьютерного зрения могут даже открывать PDF-файлы или изображения и подтверждать, что содержимое соответствует метке ссылки, исключая ручную проверку при регрессионном анализе.

Wget полностью обходит браузер и сохраняет файл непосредственно на диск через командную строку. Это полезно в устаревших системах. Selenium 2 или 3 конфигурации, в которых параметры загрузки CDP и ChromeOptions недоступны.

Подведем итог этой публикации следующим образом: