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, кодът по-долу локализира текстовото поле „Имейл адрес“, използвайки локатора за id, и полето „Парола“, използвайки локатора за name.
- Текстовото поле за имейл се намира по идентификатор.
- Полето за парола се намира до името.
изпрати ключове в 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().
В горния пример
- Намерете бутона за Влизане.
- Кликнете върху бутона „Вход“ на страницата за вход в сайта, за да се удостоверите.
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(), като използвате неявни или явни изчаквания.
Oбобщение
- Таблицата по-долу обобщава командите за достъп до всеки тип елемент, обсъден по-горе.
| Element | Команда | Descriptйон |
|---|---|---|
| Вход Box | sendKeys() | Използва се за въвеждане на стойности в текстови полета. |
| изчисти () | Използва се за изчистване на текстовите полета от текущата им стойност. | |
| Връзки | клик() | Използва се за щракване върху връзката и изчакване зареждането на страницата да завърши, преди да се премине към следващата команда. |
| Подаване на Бътън | изпращам () | Използва се за изпращане на формуляра чрез задействане на манипулатора за изпращане на родителския формуляр. |
- WebDriver позволява избор на повече от една опция в множество SELECT елемент.
- Можете да използвате метода submit() за всеки елемент във формата. WebDriver автоматично задейства функцията за изпращане на формуляра, към който принадлежи елементът.






