В этом уроке мы узнаем, как работать с загрузкой и загрузкой файлов.
Загрузка файлов
Для этого раздела мы будем использовать http://demo.guru99.com/test/upload/ в качестве нашего тестового приложения. Этот сайт легко позволяет любому посетителю загружать файлы без необходимости их регистрации.
Загрузка файлов в WebDriver осуществляется простым использованием метода sendKeys () в поле ввода выбора файла, чтобы указать путь к файлу, который нужно загрузить.
обработать всплывающее окно загрузки файла в селен вебдрайвер
Допустим, мы хотим загрузить файл «C: \ newhtml.html». Наш код WebDriver должен быть таким, как показано ниже.
package 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"); String baseUrl = "http://demo.guru99.com/test/upload/"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement uploadElement = driver.findElement(By.id("uploadfile_0")); // enter the file path onto the file-selection input field uploadElement.sendKeys("C:\\newhtml.html"); // check the "I accept the terms of service" check box driver.findElement(By.id("terms")).click(); // click the "UploadFile" button driver.findElement(By.name("send")).click(); } }
После запуска этого скрипта вы сможете успешно загрузить файл и получить сообщение, подобное этому.
Помните следующие две вещи при загрузке файлов в WebDriver
- Нет необходимости имитировать нажатие кнопки «Обзор». WebDriver автоматически вводит путь к файлу в текстовое поле выбора файла элемента <input type = «file»>
- При настройке пути к файлу в вашей среде Java IDE используйте правильный escape-символ для обратной косой черты.
Загрузка файлов
WebDriver не имеет возможности доступа к диалоговым окнам загрузки, отображаемым браузерами, когда вы нажимаете на ссылку или кнопку загрузки. Однако мы можем обойти эти диалоговые окна, используя отдельную программу под названием «wget».
Что такое Wget?
Wget — небольшая и простая в использовании программа командной строки, используемая для автоматизации загрузок . По сути, мы будем обращаться к Wget из нашего скрипта WebDriver для выполнения процесса загрузки.
Настройка Wget
Шаг 1: Создайте новую папку на диске C и назовите ее «Wget».
Загрузите wget.exe отсюда и поместите его в папку Wget, созданную на шаге выше.
Шаг 2: Откройте Run, нажав клавишу Windows + «R»; введите «cmd и нажмите ОК
Введите команду «cd /», чтобы перейти в корневой каталог
Шаг 3: Введите команду, чтобы проверить, работает ли данная настройка
cmd /c C:\\Wget\\wget.exe -P C: --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 -P D: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe
Messenger был успешно загружен.
Прежде чем продолжить, не забудьте удалить загруженный файл
Использование 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 может выглядеть так, как показано ниже.
package 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 driver = new FirefoxDriver(); driver.get(baseUrl); WebElement downloadButton = driver.findElement(By .id("messenger-download")); String sourceLocation = downloadButton.getAttribute("href"); String wget_command = "cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate " + sourceLocation; try { Process exec = Runtime.getRuntime().exec(wget_command); int exitVal = exec.waitFor(); System.out.println("Exit value: " + exitVal); } catch (InterruptedException | IOException ex) { System.out.println(ex.toString()); } driver.close(); } }
После выполнения этого кода проверьте диск D и убедитесь, что установщик Yahoo Messenger был успешно загружен с него.
Резюме
- Загрузка файлов в WebDriver осуществляется простым использованием метода sendKeys () в поле ввода выбора файла, чтобы указать путь к файлу, который нужно загрузить.
- WebDriver не может самостоятельно загружать файлы.
- Самый простой способ загрузки файлов с помощью WebDriver — это использование Wget.