WebElement в Selenium

⚡ Умно обобщение

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

  • 🧩 Прецизност на локатора: Идентифицирайте елементите на формуляра по id, name, 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, кодът по-долу локализира текстовото поле „Имейл адрес“, използвайки локатора за id, и полето „Парола“, използвайки локатора за name.

локатори

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

изпрати ключове в 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().

В горния пример

  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(), като използвате неявни или явни изчаквания.

Oбобщение

  • Таблицата по-долу обобщава командите за достъп до всеки тип елемент, обсъден по-горе.
Element Команда Descriptйон
Вход Box sendKeys() Използва се за въвеждане на стойности в текстови полета.
изчисти () Използва се за изчистване на текстовите полета от текущата им стойност.
Връзки клик() Използва се за щракване върху връзката и изчакване зареждането на страницата да завърши, преди да се премине към следващата команда.
Подаване на Бътън изпращам () Използва се за изпращане на формуляра чрез задействане на манипулатора за изпращане на родителския формуляр.
  • WebDriver позволява избор на повече от една опция в множество SELECT елемент.
  • Можете да използвате метода submit() за всеки елемент във формата. WebDriver автоматично задейства функцията за изпращане на формуляра, към който принадлежи елементът.

Въпроси и Отговори

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

УебЕлементът е Selenium обвивка, която предоставя методи за автоматизация като sendKeys, click и clear. HTML елементът е основният DOM възел. WebDriver локализира DOM възела и връща препратка към WebElement за взаимодействие.

Да. Инструментите, подпомагани от изкуствен интелект, анализират DOM и предлагат стабилни локатори, използвайки селектори като id, name, relative xpath или CSS. Те намаляват крехкостта на локаторите, като откриват уникални комбинации от атрибути и предлагат резервни варианти, когато даден атрибут се промени.

Да. Самовъзстановяващите се локатори, управлявани от изкуствен интелект, автоматично свързват отново WebElement, когато даден атрибут се промени. Това намалява нестабилните повреди, понижава усилията за поддръжка и поддържа Selenium пакетите са стабилни при чести актуализации на потребителския интерфейс в гъвкави цикли на доставка.

Често срещаните изключения на WebElement включват StaleElementReferenceException, ElementNotInteractableException, ElementClickInterceptedException, InvalidElementStateException и TimeoutException. Всяко от тях показва различен проблем с DOM, видимост или синхронизация, който трябва да се обработи с чакания или обновени препратки към елементи.

Обобщете тази публикация с: