WebElement форми селену: TextBox, Button, sendkeys (), натисніть ()

Зміст:

Anonim

Форми є основними веб-елементами для отримання інформації від відвідувачів веб-сайту. Веб-форми мають різні елементи графічного інтерфейсу, такі як текстові поля, поля пароля, прапорці, перемикачі, випадаючі меню, введення файлів тощо.

Ми побачимо, як отримати доступ до цих різних елементів форми за допомогою веб-драйвера Selenium з Java. Селен інкапсулює кожен елемент форми як об'єкт WebElement. Він надає API для пошуку елементів та вжиття заходів щодо них, наприклад введення тексту в текстові поля, клацання кнопок тощо. Ми побачимо доступні методи доступу до кожного елемента форми.

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

  • Вступ до WebElement, findElement (), findElements ()
  • Поле введення
  • Введення значень у поля вводу
  • Видалення значень у полях вводу
  • Кнопки
  • Кнопки надсилання
  • Повний код
  • Вирішення проблем

Вступ до WebElement, findElement (), findElements ()

Веб-драйвер Selenium інкапсулює простий елемент форми як об’єкт WebElement.

Існують різні методи, за допомогою яких WebDriver ідентифікує елементи форми на основі різних властивостей веб-елементів, таких як ID, Ім'я, Клас, XPath, Тег, Селектори CSS, Текст посилання тощо.

Веб-драйвер пропонує наступні два методи WebElement для пошуку елементів.

  • findElement () - знаходить один веб-елемент і повертається як об'єкт WebElement Selenium.
  • findElements () - повертає список об'єктів WebElement, що відповідають критеріям локатора.

Давайте розглянемо фрагменти коду, щоб отримати один елемент - текстове поле на веб-сторінці як об’єкт WebElement за допомогою методу findElement (). Ми розглянемо метод findElements () пошуку декількох елементів у наступних підручниках.

Крок 1: Нам потрібно імпортувати цей пакет для створення об’єктів веб-елементів

Крок 2: Нам потрібно викликати метод findElement (), доступний у класі WebDriver, і отримати об’єкт WebElement.

Зверніться нижче, щоб побачити, як це робиться.

Поле введення

Поля введення посилаються на один із цих двох типів:

  1. Текстові поля - текстові поля введення селену, які приймають набрані значення та відображають їх такими, як вони є.
  2. Поля пароля - текстові поля, які приймають набрані значення, але маскують їх як ряд спеціальних символів (зазвичай крапок та зірочок), щоб уникнути відображення чутливих значень.

Локатори

Метод findElement () приймає один параметр, який є локатором для елемента. Різні локатори, такі як By.id (), By.name (), By.xpath (), By.CSSSelector () тощо, знаходять елементи на сторінці, використовуючи їх властивості, такі як id, ім'я чи шлях, тощо

Ви можете використовувати такі плагіни, як Fire шлях, щоб отримати допомогу з отриманням ідентифікатора, xpath тощо елементів.

На наведеному нижче прикладі веб-сайту http://demo.guru99.com/test/login.html наведено код для пошуку текстового поля "Адреса електронної пошти" за допомогою локатора ідентифікаторів та поля "Пароль" за допомогою локатора імен.

  1. Текстове поле електронної пошти розташоване за ідентифікатором
  2. Поле пароля розташоване за іменем

клавіші в селені

sendkeys () у Selenium - це метод, що використовується для введення вмісту, який можна редагувати, у текстові та парольні поля під час виконання тесту. Ці поля визначаються за допомогою локаторів, таких як ім'я, клас, ідентифікатор тощо. Це метод, доступний у веб-елементі. На відміну від методу type, метод sendkeys () не замінює існуючий текст у жодному текстовому полі.

Введення значень у поля вводу

Щоб ввести текст у текстові поля та поля паролів, sendKeys () - це метод, доступний у WebElement у Selenium.

Використовуючи той самий приклад веб-сайту http://demo.guru99.com/test/login.html, ось як ми знаходимо поле Текст і Пароль та вводимо текст у селені.

  1. Знайдіть текстове поле "Адреса електронної пошти" за допомогою локатора ідентифікаторів.
  2. Знайдіть поле "Пароль", використовуючи локатор імен
  3. Введіть текст в "Адреса електронної пошти", використовуючи метод selenium.
  4. Введіть пароль у поле «Пароль» методом sendKeys ().

Видалення значень у полях вводу

Метод clear () використовується для видалення тексту у полі введення. Цей метод не потребує параметра . Фрагмент коду нижче видалить текст із полів Електронна пошта або Пароль

Кнопки

Кнопка Selenium для натискання доступна за допомогою методу click ().

У наведеному вище прикладі

  1. Знайдіть кнопку для входу
  2. Натисніть кнопку "Вхід" на сторінці входу на сайт, щоб увійти на сайт.

Кнопки надсилання

Кнопки "Надіслати" використовуються для подання всієї форми на сервер. Ми можемо використовувати метод click () на веб-елементі, як звичайну кнопку, як це було зроблено вище, або використовувати метод submit () на будь-якому веб-елементі у формі або на самій кнопці подання.

Коли використовується submit (), WebDriver шукає DOM, щоб дізнатися, до якої форми належить елемент, а потім активує його функцію submit.

Повний код

Ось повний робочий код

імпорт org.openqa.selenium.By;імпорт org.openqa.selenium.WebDriver;імпорт org.openqa.selenium.chrome.ChromeDriver;імпорт org.openqa.selenium. *;форма публічного класу {public static void main (String [] args) {// оголошення та інстанціювання об'єктів / зміннихSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Драйвер WebDriver = новий ChromeDriver ();Рядок baseUrl = "http://demo.guru99.com/test/login.html";драйвер.get (baseUrl);// Отримати WebElement, що відповідає адресі електронної пошти (TextField)WebElement email = driver.findElement (By.id ("електронна пошта"));// Отримаємо WebElement, що відповідає полю ПарольПароль WebElement = driver.findElement (By.name ("passwd"));email.sendKeys (" Ця електронна адреса захищена від спам-ботів. Для її перегляду потрібен увімкнути JavaScript.");password.sendKeys ("abcdefghlkjl");System.out.println ("Набір текстових полів");// Видалення значень у текстовому поліemail.clear ();password.clear ();System.out.println ("Текстове поле очищено");// Знайти кнопку податиWebElement login = driver.findElement (By.id ("SubmitLogin"));// Використання методу кліка для надсилання формиemail.sendKeys (" Ця електронна адреса захищена від спам-ботів. Для її перегляду потрібен увімкнути JavaScript."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Увійти, натиснувши кнопку"); // використання методу submit для подання форми. Подання, що використовується в полі пароля driver.get (baseUrl); driver.findElement (By.id ("електронна пошта")). sendKeys (" Ця електронна адреса захищена від спам-ботів. Вам потрібно включити JavaScript для перегляду."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). submit (); System.out.println ("Логін закінчено із поданням"); //driver.close (); }}

Вирішення проблем

Якщо ви зустрічаєте NoSuchElementException () під час пошуку елементів, це означає, що елемент не знайдений на сторінці в точці, до якої веб-драйвер здійснював доступ до сторінки.

  1. Перевірте свій локатор ще раз за допомогою Firepath або Inspect Element у Chrome.
  2. Перевірте, чи значення, яке ви використовували в коді, відрізняється від значення елемента у Firepath зараз.
  3. Деякі властивості динамічні для кількох елементів. Якщо ви виявите, що значення відрізняється і динамічно змінюється, розгляньте можливість використання By.xpath () або By.cssSelector (), які є більш надійними, але складними способами.
  4. Іноді це може бути проблемою очікування, тобто веб-драйвер виконував ваш код ще до того, як сторінка повністю завантажилася тощо.
  5. Додайте очікування перед findElement (), використовуючи неявні або явні очікування.

Резюме

  • У наведеній нижче таблиці узагальнено команди для доступу до кожного типу елементів, обговорених вище
Стихія Команда Опис
Поле введення sendKeys () використовується для введення значень у текстові поля
ясно () використовується для очищення текстових полів поточного значення
Посилання натисніть () використовується для натискання на посилання та очікування завершення завантаження сторінки, перш ніж переходити до наступної команди.
Кнопка "Надіслати" подати ()
  • WebDriver дозволяє вибрати кілька варіантів у декількох елементах SELECT.
  • Ви можете використовувати метод submit () для будь-якого елемента у формі. WebDriver автоматично ініціює функцію подання форми, де належить цей елемент.