Веб-элемент в Selenium: ТекстBox, Кнопка, sendkeys(), клик()
Веб-элемент в Selenium
Формы — это основные веб-элементы для получения информации от посетителей сайта. Веб-формы имеют различные элементы графического интерфейса, такие как текстовые поля, поля пароля, флажки, переключатели, раскрывающиеся списки, ввод файлов и т. д.
Мы увидим, как получить доступ к этим различным элементам формы, используя Selenium Веб-драйвер с Java. Selenium инкапсулирует каждый элемент формы как объект WebElement. Он предоставляет API для поиска элементов и выполнения над ними действий, таких как ввод текста в текстовые поля, нажатие кнопок и т. д. Мы увидим методы, доступные для доступа к каждому элементу формы.
Введение в WebElement, findElement(), findElements()
Selenium Веб-драйвер инкапсулирует простой элемент формы как объект ВебЭлемент.
Существуют различные методы, с помощью которых WebDriver идентифицирует элементы формы на основе различных свойств веб-элементов, таких как идентификатор, имя, класс, XPath, имя тега, селекторы CSS, текст ссылки и т. д.
Web Driver предоставляет следующие два метода WebElement для поиска элементов.
- найтиЭлемент() – находит один веб-элемент и возвращает его как WebElement Selenium объект.
- найтиЭлементы() – возвращает список объектов WebElement, соответствующих критериям локатора.
Давайте посмотрим фрагменты кода, чтобы получить один элемент — текстовое поле на веб-странице как объект WebElement с помощью метода findElement(). Мы рассмотрим метод findElements() для поиска нескольких элементов в последующих руководствах.
Шаг 1) Нам нужно импортировать этот пакет для создания объектов веб-элементов.
Шаг 2) Нам нужно вызвать метод findElement(), доступный в классе WebDriver, и получить объект WebElement.
Ниже вы увидите, как это делается.
Selenium Введите текст
Поля ввода относятся к любому из этих двух типов:
- Текстовые поля– Selenium текстовые поля ввода, которые принимают введенные значения и отображают их такими, какие они есть.
- Поля для пароля– текстовые поля, которые принимают введенные значения, но маскируют их серией специальных символов (обычно точек и звездочек), чтобы избежать отображения конфиденциальных значений.
Локаторы
Метод findElement() принимает один параметр, который является локатором элемента. Различные локаторы, такие как By.id(), By.name(), By.xpath(), By.CSSSelector() и т. д., определяют местонахождение элементов на странице, используя их свойства, такие как «»» id, имя или путь и т. д.
Вы можете использовать плагины, такие как Fire path, чтобы получить помощь с получением идентификатора, xpath и т. д. элементов.
Использование примера сайта https://demo.guru99.com/test/login.html Ниже приведен код для поиска текстового поля «Адрес электронной почты» с использованием локатора идентификатора и поля «Пароль» с использованием локатора имени.
- Текстовое поле электронной почты расположено по идентификатору
- Поле пароля расположено по имени
отправить ключи в Selenium
sendkeys() в Selenium — это метод, используемый для ввода редактируемого содержимого в поля текста и пароля во время выполнения теста. Эти поля идентифицируются с помощью локаторов, таких как имя, класс, идентификатор и т. д. Этот метод доступен в веб-элементе. В отличие от метода type, метод sendkeys() не заменяет существующий текст ни в одном текстовом поле.
Как ввести текст в Selenium
Чтобы ввести текст в текстовые поля и поля пароля, sendKeys() — это метод, доступный в веб-элементе в Selenium.
Используя тот же пример https://demo.guru99.com/test/login.html сайте, вот как мы находим поля «Текст» и «Пароль» и вводим текст в Selenium.
- Найдите текстовое поле «Адрес электронной почты», используя локатор идентификатора.
- Найдите поле «Пароль» с помощью локатора имени.
- Введите текст в поле «Адрес электронной почты» с помощью Selenium метод sendkeys.
- Введите пароль в поле «Пароль», используя метод sendKeys().
Удаление значений во входных данных Boxes
Команда Чисто() Метод используется для удаления текста в поле ввода. Этот метод не нуждается в параметре. Приведенный ниже фрагмент кода очистит текст из полей «Электронная почта» или «Пароль».
Selenium Нажмите кнопки
Команда Selenium Доступ к кнопке click можно получить с помощью метода click().
В приведенном выше примере
- Найдите кнопку для входа
- Нажмите кнопку «Войти» на странице входа на сайт, чтобы войти на сайт.
Selenium Кнопки отправки
Кнопки отправки используются для отправки всей формы на сервер. Мы можем либо использовать метод click() для веб-элемента, как обычную кнопку, как мы делали выше, либо использовать метод submit() для любого веб-элемента в форме или для самой кнопки отправки.
Когда используется submit(), WebDriver ищет DOM, чтобы узнать, к какой форме принадлежит элемент, а затем запускает функцию отправки.
Полный код
Вот полный рабочий код
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 () | используется для ввода значений в текстовые поля |
Чисто() | используется для очистки текстовых полей от текущего значения | |
Ссылки | нажмите () | используется для нажатия на ссылку и ожидания завершения загрузки страницы, прежде чем перейти к следующей команде. |
Разместить кнопку | представить() |
- WebDriver позволяет выбирать более одного параметра в нескольких элементах SELECT.
- Вы можете использовать метод submit() для любого элемента формы. WebDriver автоматически активирует функцию отправки формы, к которой принадлежит этот элемент.