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

WebElement в Selenium
Форми – це основні веб-елементи, які збирають інформацію від відвідувачів веб-сайту. Веб-форми містять різні елементи керування графічним інтерфейсом, такі як текстові поля, поля для паролів, прапорці, перемикачі, випадаючі списки та поля для введення файлів.
У цьому посібнику пояснюється, як отримати доступ до кожного елемента форми за допомогою Selenium Веб-драйвер з Java. Selenium інкапсулює кожен елемент форми як об’єкт WebElement. Він надає API для пошуку елементів та дій з ними, включаючи введення тексту, натискання кнопок та надсилання форм. У розділах нижче описано методи, доступні для кожного елемента форми.
Вступ до 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 Введення тексту
Поля введення стосуються одного з цих двох типів:
- Текстові поля - Selenium текстові поля, які приймають введені значення та відображають їх точно так, як вони введені.
- Поля пароля – текстові поля, які приймають введені значення, але маскують їх як набір спеціальних символів (зазвичай крапок або зірочок), щоб приховати конфіденційне введення.
Локатори
Метод findElement() приймає один параметр, який є локатором, що вказує на елемент. Різні локатори, включаючи By.id(), By.name(), By.xpath() та By.cssSelector(), знаходять елементи на сторінці, використовуючи їхні властивості, такі як id, name або path.
Ви можете використовувати плагіни, такі як FirePath, щоб отримати id, xpath та інші значення локатора для елементів.
На прикладі сайту https://demo.guru99.com/test/login.html, наведений нижче код знаходить текстове поле «Адреса електронної пошти» за допомогою локатора ідентифікатора та поле «Пароль» за допомогою локатора імені.
- Текстове поле електронної пошти розташоване за ідентифікатором.
- Поле пароля розташоване поруч із іменем.
sendkeys in Selenium
sendKeys() у Selenium – це метод, який використовується для введення редагованого вмісту в текстові поля та поля пароля під час виконання тесту. Ці поля ідентифікуються за допомогою локаторів, таких як ім'я, клас та ідентифікатор. Метод доступний для об'єкта WebElement. На відміну від методу type, sendKeys() не замінює існуючий текст у текстовому полі.
Як ввести текст Selenium
Для введення тексту в текстові поля та поля пароля використовується метод sendKeys(), доступний у WebElement. Selenium.
Використовуючи той самий приклад https://demo.guru99.com/test/login.html, фрагмент коду нижче знаходить текстове поле та поле пароля і вводить текст Selenium.
- Знайдіть текстове поле «Адреса електронної пошти» за допомогою локатора ідентифікаторів.
- Знайдіть поле «Пароль» за допомогою локатора імені.
- Введіть текст у «Адресу електронної пошти» за допомогою Selenium Метод sendKeys.
- Введіть пароль у поле «Пароль» за допомогою методу sendKeys().
Видалення значень у вхідних даних Boxes
Команда ясно () Метод видаляє текст усередині поля введення. Цей метод не потребує параметра. Фрагмент нижче очищає текст із полів Електронна пошта або Пароль.
Selenium Натисніть кнопки
Команда Selenium Доступ до кнопки click здійснюється за допомогою методу click().
У наведеному вище прикладі
- Знайдіть кнопку для входу.
- Натисніть кнопку «Увійти» на сторінці входу на сайт, щоб пройти автентифікацію.
Selenium Кнопки надсилання
Кнопки надсилання надсилають усю форму на сервер. Ви можете або викликати метод click() для WebElement, як показано вище, або використати метод submit() для будь-якого елемента форми чи для самої кнопки надсилання.
Коли використовується 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 до нього.
- Перевірте свій локатор ще раз за допомогою FirePath або опції «Перевірити елемент» у Chrome.
- Перевірте, чи значення, що використовується в коді, відрізняється від поточного значення елемента, що відображається у FirePath.
- Деякі атрибути є динамічними для певних елементів. Якщо значення змінюється динамічно, перейдіть на By.xpath() або By.cssSelector(), які є надійнішими, але трохи складнішими.
- Іноді проблема полягає в умові очікування; WebDriver може виконати код до завершення завантаження сторінки.
- Додайте очікування перед findElement() за допомогою неявних або явних очікувань.
Резюме
- У таблиці нижче наведено команди для доступу до кожного типу елементів, розглянутих вище.
| Елемент | Command | Опис |
|---|---|---|
| вхід Box | sendKeys() | Використовується для введення значень у текстові поля. |
| ясно () | Використовується для очищення текстових полів від їхнього поточного значення. | |
| Посилання | клік() | Використовується для натискання на посилання та очікування завершення завантаження сторінки перед переходом до наступної команди. |
| Надіслати Button | подати() | Використовується для надсилання форми шляхом активації обробника надсилання батьківської форми. |
- WebDriver дозволяє вибрати більше одного параметра в кількох елементах SELECT.
- Ви можете використовувати метод submit() для будь-якого елемента у формі. WebDriver автоматично запускає функцію submit форми, до якої належить цей елемент.






