Учебники

13) Загрузить и скачать файл

В этом уроке мы узнаем, как работать с загрузкой и загрузкой файлов.

Загрузка файлов

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

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

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

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

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

  1. Нет необходимости имитировать нажатие кнопки «Обзор». WebDriver автоматически вводит путь к файлу в текстовое поле выбора файла элемента <input type = «file»>
  2. При настройке пути к файлу в вашей среде 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.