В этом руководстве мы узнаем, как работать с загрузкой и скачиванием файлов.
Загрузка файлов
В этом разделе мы будем использовать http://demo.guru99.com/test/upload/ в качестве тестового приложения. Этот сайт легко позволяет любому посетителю загружать файлы, не требуя от них регистрации.
Загрузка файлов в WebDriver выполняется простым использованием метода sendKeys () в поле ввода выбора файла для ввода пути к файлу для загрузки.
обрабатывать всплывающее окно загрузки файла в selenium webdriverДопустим, мы хотим загрузить файл «C: \ newhtml.html». Наш код WebDriver должен быть таким, как показано ниже.
пакет newproject;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;public class PG9 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");Строка baseUrl = "http://demo.guru99.com/test/upload/";Драйвер WebDriver = новый FirefoxDriver ();driver.get (baseUrl);WebElement 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-символ для обратной косой черты.
Скачивание файлов
WebDriver не имеет возможности получить доступ к диалоговым окнам загрузки, отображаемым браузерами, когда вы щелкаете ссылку или кнопку загрузки. Однако мы можем обойти эти диалоговые окна, используя отдельную программу под названием «wget».
Что такое Wget?
Wget - это небольшая и простая в использовании программа командной строки, используемая для автоматизации загрузки . По сути, мы будем обращаться к Wget из нашего скрипта WebDriver, чтобы выполнить процесс загрузки.
Настройка Wget
Шаг 1. На диске C создайте новую папку и назовите ее «Wget».
Загрузите wget.exe отсюда и поместите его в папку Wget, которую вы создали на шаге выше.
Шаг 2: Откройте «Выполнить», нажав клавиши Windows + «R»; введите "cmd и нажмите ОК
Введите команду "cd /", чтобы перейти в корневой каталог.
Шаг 3. Введите команду, чтобы проверить, работает ли данная настройка.
cmd / c C: \\ Wget \\ wget.exe -PC: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe
Похоже, возникла проблема с записью на диск C.
Шаг 4: Вам необходимо отладить ошибки wget в командной строке, прежде чем выполнять код с помощью Selenium Webdriver. Эти ошибки будут сохраняться в Eclipse, и сообщения об ошибках не будут столь информативными. Лучше сначала заставить wget работать с помощью командной строки. Если он работает в командной строке, он обязательно будет работать в Eclipse.
В нашем примере, как показано на шаге 3, возникла проблема с записью на диск C. Давайте изменим место загрузки на диск D и проверим результаты.
cmd / c C: \\ Wget \\ wget.exe -PD: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe
Мессенджер был успешно загружен.
Прежде чем продолжить, не забудьте удалить загруженный файл.
Использование WebDriver и Wget
В следующем примере мы будем использовать WebDriver и wget для загрузки популярного программного обеспечения для чата под названием Yahoo Messenger. Наш базовый URL-адрес должен быть http://demo.guru99.com/test/yahoo.html.
Шаг 1
Импортируйте пакет «java.io.IOException», потому что нам нужно будет перехватить IOException позже на шаге 4.
Шаг 2
Используйте getAttribute (), чтобы получить значение «href» ссылки для загрузки и сохранить его как строковую переменную. В этом случае мы назвали переменную «sourceLocation».
Шаг 3
Настройте синтаксис для wget с помощью следующей команды.
Шаг 4
Начните процесс загрузки, вызвав wget из нашего кода WebDriver.
Подводя итог, ваш код WebDriver может выглядеть так, как показано ниже.
пакет newproject;import java.io.IOException;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;public class PG8 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");String baseUrl = "http://demo.guru99.com/test/yahoo.html";Драйвер WebDriver = новый FirefoxDriver ();driver.get (baseUrl);WebElement downloadButton = driver.findElement (Автор.id ("мессенджер-скачать"));Строка 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);} catch (InterruptedException | исключение IOException) {System.out.println (например, toString ());}driver.close ();}}
После выполнения этого кода проверьте диск D и убедитесь, что установщик Yahoo Messenger был успешно загружен на него.
Резюме
- Загрузка файлов в WebDriver выполняется простым использованием метода sendKeys () в поле ввода выбора файла для ввода пути к файлу для загрузки.
- WebDriver не может автоматизировать загрузку файлов самостоятельно.
- Самый простой способ загружать файлы с помощью WebDriver - использовать Wget.