Як завантажити & Завантажте файл за допомогою Selenium Webdriver

Зміст:

Anonim

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

Завантаження файлів

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

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

Обробляти спливаюче вікно завантаження файлів у Selenium Webdriver
обробляти спливаюче вікно для завантаження файлів у селену

Скажімо, ми хочемо завантажити файл "C: \ newhtml.html". Наш код WebDriver повинен бути таким, як показано нижче.

пакет newproject;імпорт org.openqa.selenium. *;імпорт org.openqa.selenium.firefox.FirefoxDriver;публічний клас PG9 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");Рядок baseUrl = "http://demo.guru99.com/test/upload/";Драйвер WebDriver = новий FirefoxDriver ();драйвер.get (baseUrl);WebElement uploadElement = driver.findElement (By.id ("uploadfile_0"));// вводимо шлях до файлу у поле введення файлу для виборуuploadElement.sendKeys ("C: \\ newhtml.html");// встановіть прапорець "Я приймаю умови обслуговування"driver.findElement (By.id ("умови")). click ();// натисніть кнопку "UploadFile"driver.findElement (By.name ("надіслати")). click ();}}

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

Пам’ятайте, виконуючи дві речі, завантажуючи файли у WebDriver

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

Завантаження файлів

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

Що таке Wget?

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

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

Крок 1: На своєму диску C створіть нову папку та назвіть її як "Wget".

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

Крок 2: Відкрити Запуск, натиснувши клавішу Windows + "R"; введіть "cmd і натисніть кнопку OK

Введіть команду "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

Messenger завантажено успішно.

Перш ніж продовжити, не забудьте видалити завантажений файл

Використання WebDriver та Wget

У наступному прикладі ми будемо використовувати WebDriver та wget для завантаження популярного програмного забезпечення для чату під назвою Yahoo Messenger. Наша основна URL-адреса має бути http://demo.guru99.com/test/yahoo.html.

Крок 1

Імпортуйте пакет "java.io.IOException", тому що пізніше на кроці 4 нам доведеться зловити IOException.

Крок 2

Використовуйте getAttribute (), щоб отримати значення "href" посилання для завантаження та зберегти його як змінну String. У цьому випадку ми назвали змінну як "sourceLocation".

Крок 3

Налаштуйте синтаксис для wget, використовуючи наступну команду.

Крок 4

Розпочніть процес завантаження, зателефонувавши wget із нашого коду WebDriver.

Підсумовуючи все це, ваш код WebDriver може виглядати так, як показано нижче.

пакет newproject;імпортувати java.io.IOException;імпорт org.openqa.selenium. *;імпорт org.openqa.selenium.firefox.FirefoxDriver;публічний клас PG8 {public static void main (String [] args) {System.setProperty ("webdriver.gecko.driver", "C: \\ geckodriver.exe");Рядок baseUrl = "http://demo.guru99.com/test/yahoo.html";Драйвер WebDriver = новий FirefoxDriver ();драйвер.get (baseUrl);WebElement downloadButton = driver.findElement (Автор:.id ("messenger-download"));Рядок 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 ex) {System.out.println (наприклад, toString ());}driver.close ();}}

Після виконання цього коду перевірте свій диск D і переконайтеся, що інсталятор Yahoo Messenger успішно завантажений туди.

Резюме

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