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