WebElement в Selenium

⚡ Розумний підсумок

WebElement в Selenium представляє кожен елемент керування форми як програмований об'єкт, що дозволяє тестувальникам взаємодіяти з текстовими полями, прапорцями, радіокнопками та елементами надсилання за допомогою методів findElement, sendKeys, click, clear та submit через Java приклади коду.

  • 🧩 Точність локатора: Визначайте елементи форми за ідентифікатором, назвою, xpath або селектором CSS за допомогою findElement() для забезпечення стабільної взаємодії з DOM.
  • ✍️ Обробка введення: Надсилайте редагований текст у поля за допомогою sendKeys() без перезапису існуючих значень під час автоматичного виконання.
  • 🧹 Скидання поля: Очищайте поля введення за допомогою методу clear() перед повторним введенням даних, запобігаючи появі залишкових значень у наступних твердженнях.
  • 🖱️ Взаємодія з кнопками: Активувати дії входу або навігації за допомогою методу click() для відповідного посилання WebElement.
  • 📨 Подання форми: Використовуйте submit() для будь-якого елемента у формі, щоб WebDriver автоматично відправляв обробник надсилання батьківської форми.
  • 🛡️ Порада щодо стабільності: Додайте неявні або явні очікування перед викликами findElement(), щоб запобігти винятку NoSuchElementException на динамічно завантажених сторінках.

WebElement в Selenium

WebElement в Selenium

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

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

Вступ до WebElement FindElement, FindElements

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

Selenium WebDriver представляє простий елемент форми як об'єкт Веб-елемент.

WebDriver ідентифікує елементи форми, використовуючи різні властивості веб-елементу, включаючи ID, Name, Class, XPath, Тег, CSS-селектори та текст посилання.

WebDriver надає такі два методи WebElement для пошуку елементів:

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

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

Крок 1) Імпортуйте пакет, необхідний для створення об'єктів WebElement.

Крок 2) Викличте метод findElement(), доступний у класі WebDriver, щоб отримати об'єкт WebElement, як показано нижче.

Selenium Введення тексту

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

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

    Selenium Введення тексту

Локатори

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

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

На прикладі сайту https://demo.guru99.com/test/login.html, наведений нижче код знаходить текстове поле «Адреса електронної пошти» за допомогою локатора ідентифікатора та поле «Пароль» за допомогою локатора імені.

Локатори

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

sendkeys in Selenium

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

Як ввести текст Selenium

Для введення тексту в текстові поля та поля пароля використовується метод sendKeys(), доступний у WebElement. Selenium.

Використовуючи той самий приклад https://demo.guru99.com/test/login.html, фрагмент коду нижче знаходить текстове поле та поле пароля і вводить текст Selenium.

Текст в Selenium

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

Видалення значень у вхідних даних Boxes

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

Видалення значень у вхідних даних Boxes

Selenium Натисніть кнопки

Команда Selenium Доступ до кнопки click здійснюється за допомогою методу click().

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

  1. Знайдіть кнопку для входу.
  2. Натисніть кнопку «Увійти» на сторінці входу на сайт, щоб пройти автентифікацію.

Selenium Натисніть кнопки

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

Кнопки надсилання надсилають усю форму на сервер. Ви можете або викликати метод click() для WebElement, як показано вище, або використати метод submit() для будь-якого елемента форми чи для самої кнопки надсилання.

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

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

Цілковита Code

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

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class Form {
    public static void main(String[] args) {

        // declaration and instantiation of objects/variables
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        String baseUrl = "https://demo.guru99.com/test/login.html";
        driver.get(baseUrl);

        // Get the WebElement corresponding to the Email Address(TextField)
        WebElement email = driver.findElement(By.id("email"));

        // Get the WebElement corresponding to the Password Field
        WebElement password = driver.findElement(By.name("passwd"));

        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        System.out.println("Text Field Set");

        // Deleting values in the text box
        email.clear();
        password.clear();
        System.out.println("Text Field Cleared");

        // Find the submit button
        WebElement login = driver.findElement(By.id("SubmitLogin"));

        // Using click method to submit form
        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        login.click();
        System.out.println("Login Done with Click");

        // Using submit method to submit the form. Submit used on password field
        driver.get(baseUrl);
        driver.findElement(By.id("email")).sendKeys("abcd@gmail.com");
        driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl");
        driver.findElement(By.id("SubmitLogin")).submit();
        System.out.println("Login Done with Submit");

        // driver.close();
    }
}

Пошук і усунення несправностей

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

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

Резюме

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

Поширені запитання

findElement() повертає перший відповідний WebElement та викидає NoSuchElementException, якщо жодного не існує. findElements() повертає список відповідних WebElement та повертає порожній список, якщо жоден елемент не відповідає локатору.

Веб-елемент – це Selenium обгортка, яка надає доступ до методів автоматизації, таких як sendKeys, click та clear. HTML-елемент є базовим вузлом DOM. WebDriver знаходить вузол DOM та повертає посилання на WebElement для взаємодії.

Так. Інструменти на основі штучного інтелекту аналізують DOM та пропонують стабільні локатори, використовуючи селектори id, name, relative xpath або CSS. Вони зменшують крихкість локаторів, виявляючи унікальні комбінації атрибутів та пропонуючи резервні варіанти, коли атрибут змінюється.

Так. Локатори на основі штучного інтелекту з функцією самовідновлення автоматично повторно прив’язують WebElement, коли атрибут змінюється. Це зменшує нестабільні збої, зусилля на обслуговування та підтримує Selenium стабільні пакети програмного забезпечення навіть при частих оновленнях інтерфейсу користувача в гнучких циклах доставки.

До поширених винятків WebElement належать StaleElementReferenceException, ElementNotInteractableException, ElementClickInterceptedException, InvalidElementStateException та TimeoutException. Кожен із них вказує на різні проблеми з DOM, видимістю або синхронізацією, які слід обробляти за допомогою очікування або оновлених посилань на елементи.

Підсумуйте цей пост за допомогою: