FindElement по XPath в Selenium

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

FindElement по XPath в Selenium Команда `findElements` однозначно идентифицирует отдельный веб-элемент на странице, а `findElements` возвращает полный список соответствующих элементов. Обе команды принимают объект `By`, охватывающий стратегии ID, Name, Class Name и XPath.

  • Основной принцип: Функция FindElement возвращает первый соответствующий WebElement; функция FindElements возвращает список, индексированный с нуля, подобно массиву.
  • ⚠️ Обработка исключений: Функция FindElement выбрасывает исключение NoSuchElementException, если совпадение не найдено, тогда как функция FindElements возвращает пустой список вместо ошибки.
  • 🧭 Стратегии поиска: Выберите один из следующих параметров: ID, Name, Class Name, Tag Name, Link Text, Partial Link Text и XPath.
  • 🧩 Фокус реализации: Передайте объект By с уникальным значением локатора для надежного выбора элементов в скриптах WebDriver.
  • 🚀 Практическое применение: Работы Java В примерах показано, как нажать на переключатель и перебрать список элементов на демонстрационной странице.

FindElement по XPath в Selenium

In Selenium Вебдрайвер, Найти элемент и Найти элементы Это основные команды, используемые для определения местоположения веб-элементов на странице до выполнения каких-либо действий, таких как щелчок мышью или ввод текста.

Зачем вам нужна команда «Найти элемент(ы)»?

Для взаимодействия с веб-страницей пользователю сначала необходимо найти нужный веб-элемент. Команда «Найти элемент» используется для однозначной идентификации одного веб-элемента на веб-странице, тогда как команда «Найти элементы» используется для идентификации списка веб-элементов. Элемент может быть идентифицирован с помощью нескольких методов. стратегии поиска например, ID, Name, Class Name, Link Text, Part Link Text, Tag Name и XPath.

Синтаксис команды FindElement

Ниже приведён синтаксис команды FindElement. Selenium Вебдрайвер:

WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));

Команда FindElement принимает в качестве параметра объект By и возвращает один объект типа WebElement. Объект By, в свою очередь, может использоваться с различными стратегиями поиска, такими как ID, Name, Class Name, XPath и т. д.

В качестве параметра стратегии определения местоположения может приниматься любое из следующих значений:

  • ID
  • Имя
  • Имя класса
  • Название тэга
  • Текст ссылки
  • Частичный текст ссылки
  • XPath

Значение локатора — это уникальное значение, по которому можно идентифицировать веб-элемент. Задача разработчиков и тестировщиков — обеспечить уникальную идентификацию веб-элементов с помощью определенных свойств, таких как ID или Name.

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

WebElement loginLink = driver.findElement(By.linkText("Login"));

Пример: найти элемент в Selenium

Для демонстрации работы команды FindElement используется следующее демонстрационное приложение:

https://demo.guru99.com/test/ajax.html

Сценарий:

Шаг 1: Откройте АВТО

Шаг 2: Найдите и выберите переключатель, затем нажмите кнопку «Проверить».

package com.sample.stepdefinitions;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class NameDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub

System.setProperty("webdriver.chrome.driver", "D:\\3rdparty\\chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();

driver.get("https://demo.guru99.com/test/ajax.html");

// Find the radio button for “No” using its ID and click on it
driver.findElement(By.id("no")).click();

//Click on Check Button
driver.findElement(By.id("buttoncheck")).click();

}

}

Синтаксис команды FindElements

Если вам нужны все элементы, соответствующие заданному локатору, а не только первый, используйте функцию FindElements. Ниже приведён её синтаксис:

List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));

Команда FindElements принимает в качестве параметра объект By и возвращает список веб-элементов. Она возвращает пустой список, если элементы не найдены с использованием заданной стратегии и значения локатора.

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));

Пример: найти элементы в Selenium

Одно и то же демонстрационное приложение используется для показа того, как функция FindElements перебирает список совпадающих элементов.

Сценарий:

Шаг 1: Откройте приложение URL для тестируемого приложения

Шаг 2: Найдите текст радиокнопок и выведите его на консоль вывода.

package com.sample.stepdefinitions;

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class NameDemo {

public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver", "X://chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("https://demo.guru99.com/test/ajax.html");
    List<WebElement> elements = driver.findElements(By.name("name"));
    System.out.println("Number of elements:" +elements.size());

    for (int i=0; i<elements.size();i++){
      System.out.println("Radio button text:" + elements.get(i).getAttribute("value"));
    }
  }
}

Найти элемент против Найти элементы

Ниже приведены основные различия между командами «Найти элемент» и «Найти элементы»:

Find Element vs Find Elements in Selenium

Найти элемент Найти элементы
Возвращает первый веб-элемент, если найдено несколько веб-элементов с тем же локатором. Возвращает список веб-элементов
Генерирует исключение NoSuchElementException, если нет элементов, соответствующих стратегии поиска. Возвращает пустой список, если нет веб-элементов, соответствующих стратегии локатора.
Функция «Найти элемент по XPath» найдет только один веб-элемент. Она найдет набор элементов, соответствующих стратегии поиска.
Не применимо Каждый веб-элемент индексируется числом, начинающимся с 0, подобно массиву.

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

Используйте Selenium неявные или явные ожидания Таким образом, драйвер опрашивает страницу до тех пор, пока элемент не появится. Явное ожидание с помощью WebDriverWait и ожидаемых условий является наиболее надежным подходом для динамических страниц, управляемых AJAX.

ID — это самый быстрый и надежный локатор, поскольку браузеры индексируют его напрямую. Селекторы CSS, как правило, быстрее, чем XPath, поэтому XPath следует использовать только в тех случаях, когда уникальный ID, Name или class недоступны.

Да. Инструменты тестирования на основе искусственного интеллекта могут анализировать DOM и автоматически предлагать стабильные локаторы XPath или CSS, сокращая время ручной проверки. RevПеред добавлением в производственные тестовые наборы, программа iew сгенерировала уникальные локаторы.

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

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