Веб-элемент в Selenium

⚡ Умное резюме

Веб-элемент в Selenium представляет каждый элемент управления формы как программируемый объект, позволяя тестировщикам взаимодействовать с текстовыми полями, флажками, переключателями и элементами отправки, используя методы findElement, sendKeys, click, clear и submit. Java примеры кода.

  • 🧩 Точность определения местоположения: Идентифицируйте элементы формы по идентификатору, имени, XPath или CSS-селектору с помощью функции findElement(), чтобы обеспечить стабильное взаимодействие с DOM.
  • ✍️ Обработка ввода: Отправляйте редактируемый текст в поля с помощью функции sendKeys() без перезаписи существующих значений во время автоматического выполнения.
  • 🧹 Сброс поля: Перед повторным вводом данных очистите поля ввода с помощью метода clear(), чтобы предотвратить появление остаточных значений при последующих проверках.
  • 🇧🇷 Взаимодействие с кнопками: Запускайте действия входа в систему или навигации с помощью метода click() для соответствующей ссылки на WebElement.
  • 📨 Отправка формы: Используйте метод submit() для любого элемента внутри формы, чтобы WebDriver автоматически отправлял обработчик отправки родительской формы.
  • 🛡️ Совет по устойчивости: Добавьте неявные или явные задержки перед вызовами findElement(), чтобы предотвратить исключение NoSuchElementException на динамически загружаемых страницах.

Веб-элемент в Selenium

Веб-элемент в Selenium

Формы — это основные элементы веб-интерфейса, которые собирают информацию от посетителей сайта. Веб-формы включают в себя различные элементы управления графического интерфейса пользователя, такие как текстовые поля, поля для ввода пароля, флажки, переключатели, выпадающие списки и поля для ввода файлов.

В этом руководстве объясняется, как получить доступ к каждому элементу формы с помощью Selenium Вебдрайвер с Java. Selenium инкапсулирует каждый элемент формы как объект WebElement. Он предоставляет API для поиска элементов и выполнения с ними действий, включая ввод текста, нажатие кнопок и отправку форм. В разделах ниже описаны методы, доступные для каждого элемента формы.

Введение в WebElement FindElement,FindElements

Введение в WebElement, findElement(), findElements()

Selenium WebDriver представляет собой простой элемент формы в виде объекта веб-элемент.

WebDriver идентифицирует элементы формы, используя различные свойства веб-элемента, включая ID, Name, Class. XPath, имя тега, CSS-селекторы и текст ссылки.

WebDriver предоставляет следующие два метода WebElement для поиска элементов:

  • найтиЭлемент() – находит отдельный веб-элемент и возвращает его в виде объекта WebElement. Selenium объект.
  • найтиЭлементы() – возвращает список объектов WebElement, соответствующих критериям локатора.

В приведенном ниже примере показано, как получить один элемент — текстовое поле на веб-странице — в виде объекта WebElement с помощью метода findElement(). Метод findElements() для поиска нескольких элементов рассматривается в последующих уроках.

Шаг 1) Импортируйте пакет, необходимый для создания объектов WebElement.

Шаг 2) Для получения объекта WebElement вызовите метод findElement() класса WebDriver, как показано ниже.

Selenium Введите текст

Поля ввода относятся к любому из этих двух типов:

  1. Текстовые поля – Selenium Текстовые поля ввода, которые принимают введенные значения и отображают их точно так, как они были введены.
  2. Поля для пароля – текстовые поля, которые принимают введенные значения, но маскируют их под последовательность специальных символов (обычно точек или звездочек), чтобы скрыть конфиденциальную информацию.

    Selenium Введите текст

Локаторы

Метод findElement() принимает один параметр — локатор, указывающий на элемент. Различные локаторы, включая By.id(), By.name(), By.xpath() и By.cssSelector(), находят элементы на странице, используя их свойства, такие как id, name или path.

Для получения идентификатора, XPath и других значений локаторов элементов можно использовать такие плагины, как FirePath.

Использование примера сайта https://demo.guru99.com/test/login.htmlПриведённый ниже код находит текстовое поле «Адрес электронной почты», используя идентификатор, и поле «Пароль», используя имя.

Локаторы

  1. Поле для ввода адреса электронной почты находится по идентификатору.
  2. Поле для ввода пароля расположено по имени.

отправить ключи в Selenium

sendKeys() в Selenium Метод sendKeys() используется для ввода редактируемого содержимого в текстовые поля и поля ввода пароля во время выполнения теста. Эти поля идентифицируются с помощью таких локаторов, как name, class и id. Метод доступен для объекта 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(), используя неявное или явное ожидание.

Резюме

  • В таблице ниже приведено краткое описание команд для доступа к каждому типу элементов, описанных выше.
Элемент Command Описание
вход Box sendKeys () Используется для ввода значений в текстовые поля.
Чисто() Используется для очистки текстовых полей от их текущего значения.
Ссылки нажмите () Используется для перехода по ссылке и ожидания завершения загрузки страницы перед выполнением следующей команды.
Разместить кнопку представить() Используется для отправки формы путем запуска обработчика отправки родительской формы.
  • WebDriver позволяет выбирать более одного параметра в нескольких элементах SELECT.
  • Метод submit() можно использовать для любого элемента внутри формы. WebDriver автоматически запускает функцию submit формы, к которой принадлежит данный элемент.

Часто задаваемые вопросы (FAQ)

Метод findElement() возвращает первый соответствующий WebElement и генерирует исключение NoSuchElementException, если таковых нет. Метод findElements() возвращает список соответствующих WebElement и возвращает пустой список, если ни один элемент не соответствует локатору.

Веб-элемент — это Selenium Оболочка, предоставляющая доступ к методам автоматизации, таким как sendKeys, click и clear. HTML-элемент — это базовый узел DOM. WebDriver находит узел DOM и возвращает ссылку на WebElement для взаимодействия.

Да. Инструменты с поддержкой ИИ анализируют DOM и предлагают стабильные локаторы, используя идентификаторы, имена, относительные XPath или селекторы CSS. Они уменьшают нестабильность локаторов, обнаруживая уникальные комбинации атрибутов и предлагая резервные варианты при изменении атрибута.

Да. Самовосстанавливающиеся локаторы на основе ИИ автоматически перенастраивают WebElement при изменении атрибута. Это снижает количество сбоев, уменьшает трудозатраты на обслуживание и обеспечивает бесперебойную работу. Selenium Пакеты программного обеспечения остаются стабильными при частых обновлениях пользовательского интерфейса в рамках гибких циклов разработки.

К распространённым исключениям WebElement относятся StaleElementReferenceException, ElementNotInteractableException, ElementClickInterceptedException, InvalidElementStateException и TimeoutException. Каждое из них указывает на различную проблему DOM, видимости или синхронизации, которую следует обрабатывать с помощью ожидания или обновления ссылок на элементы.

Подведем итог этой публикации следующим образом: