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

Скажімо, ми хочемо завантажити файл “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(); } }
Після запуску цього сценарію ви зможете успішно завантажити файл і отримаєте подібне повідомлення.
Під час завантаження файлів у WebDriver пам’ятайте про дві речі
- Немає необхідності імітувати натискання кнопки «Огляд». WebDriver автоматично вводить шлях до файлу в текстове поле вибору файлу елемент
- Під час встановлення шляху до файлу у вашому Java IDE, використовуйте правильний escape-символ для зворотної косої риски.
Як завантажити файл в Selenium Веб-драйвер
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 -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Здається, виникла проблема із записом на диск 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
Messenger було успішно завантажено.
Перш ніж продовжити, не забудьте видалити завантажений файл
Використання WebDriver і Wget
У наступному прикладі ми використаємо WebDriver і wget для завантаження популярного програмного забезпечення для чату під назвою Yahoo Messenger. Наша базова URL-адреса має бути https://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 = "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 здійснюється простим використанням методу sendKeys() у полі введення файлу для введення шляху до файлу, який потрібно завантажити.
- WebDriver не може самостійно автоматизувати завантаження файлів.
- Найпростіший спосіб завантажувати файли за допомогою WebDriver — використовувати Wget.