Як передати та завантажити файл за допомогою Selenium Веб-драйвер

Завантажте файл у селен

Завантаження файлів у WebDriver здійснюється простим використанням методу sendKeys() у полі введення файлу для введення шляху до файлу, який потрібно завантажити.

У цьому підручнику ми дізнаємося, як працювати із завантаженнями та завантаженнями файлів.

Як завантажити файл в Selenium

Для цього розділу ми будемо використовувати https://demo.guru99.com/test/upload/ як наш тестовий додаток. Цей сайт дозволяє будь-якому відвідувачу легко завантажувати файли, не вимагаючи від них реєстрації.

Завантажити файл в Selenium
Керуйте спливаючим вікном завантаження файлу Selenium Веб-драйвер

Скажімо, ми хочемо завантажити файл “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 = "https://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();
        }
}

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

Завантажити файл в Selenium

Під час завантаження файлів у WebDriver пам’ятайте про дві речі

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

Завантажити файл в Selenium

Як завантажити файл в Selenium Веб-драйвер

WebDriver не має доступу до діалогових вікон завантаження представлені браузерами, коли ви натискаєте посилання або кнопку для завантаження. Однак ми можемо обійти ці діалогові вікна за допомогою окремої програми під назвою «wget».

Що таке Wget?

Wget — це невелика та проста у використанні програма командного рядка, яка використовується для автоматизації завантажень. По суті, ми отримаємо доступ до Wget із нашого сценарію WebDriver, щоб виконати процес завантаження.

Налаштування Wget

Крок 1) На диску C створіть нову папку та назвіть її «Wget».

Завантажте wget.exe звідси і помістіть його в папку Wget, яку ви створили під час кроку вище.

Налаштування Wget

Крок 2) Відкрийте «Виконати», натиснувши клавішу Windows + «R»; введіть «cmd» і натисніть «ОК».

Налаштування Wget

Введіть команду «cd /», щоб перейти до кореневого каталогу

Налаштування Wget

Крок 3) Введіть команду, щоб перевірити, чи працює дане налаштування

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

Налаштування Wget

Здається, виникла проблема із записом на диск C.

Крок 4) Вам потрібно налагодити помилки wget у командному рядку, перш ніж виконувати код за допомогою Selenium Веб-драйвер. Ці помилки будуть зберігатися Eclipse і повідомлення про помилки будуть не такими інформативними. Найкраще спочатку налаштувати роботу wget за допомогою командного рядка. Якщо він працює в командному рядку, він точно працюватиме Eclipse.

У нашому прикладі, як показано на кроці 3, виникла проблема із записом на диск C. Давайте змінимо місце завантаження на диск D і перевіримо результати.

cmd /c C:\\Wget\\wget.exe -P D: --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 може виглядати так, як показано нижче.

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 = "https://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 і Wget

Підсумки

  • Завантаження файлів у WebDriver здійснюється простим використанням методу sendKeys() у полі введення файлу для введення шляху до файлу, який потрібно завантажити.
  • WebDriver не може самостійно автоматизувати завантаження файлів.
  • Найпростіший спосіб завантажувати файли за допомогою WebDriver — використовувати Wget.

Щоденний інформаційний бюлетень Guru99

Розпочніть свій день з останніх та найважливіших новин про штучний інтелект, які ви можете знайти просто зараз.