FindElement по XPath в Selenium
⚡ Умное резюме
FindElement по XPath в Selenium Команда `findElements` однозначно идентифицирует отдельный веб-элемент на странице, а `findElements` возвращает полный список соответствующих элементов. Обе команды принимают объект `By`, охватывающий стратегии ID, Name, Class Name и XPath.
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"));
}
}
}
Найти элемент против Найти элементы
Ниже приведены основные различия между командами «Найти элемент» и «Найти элементы»:
| Найти элемент | Найти элементы |
|---|---|
| Возвращает первый веб-элемент, если найдено несколько веб-элементов с тем же локатором. | Возвращает список веб-элементов |
| Генерирует исключение NoSuchElementException, если нет элементов, соответствующих стратегии поиска. | Возвращает пустой список, если нет веб-элементов, соответствующих стратегии локатора. |
| Функция «Найти элемент по XPath» найдет только один веб-элемент. | Она найдет набор элементов, соответствующих стратегии поиска. |
| Не применимо | Каждый веб-элемент индексируется числом, начинающимся с 0, подобно массиву. |


