Зачем вам нужна команда Find Element / s?
Взаимодействие с веб-страницей требует от пользователя найти веб-элемент. Команда «Найти элемент» используется для однозначной идентификации (одного) веб-элемента на веб-странице. Принимая во внимание, что команда «Найти элементы» используется для уникальной идентификации списка веб-элементов на веб-странице. Существует несколько способов уникальной идентификации веб-элемента на веб-странице, такого как идентификатор, имя, имя класса, текст ссылки, текст частичной ссылки, имя тега и XPATH.
Синтаксис команды FindElement:
Команда Find Element принимает объект By в качестве параметра и возвращает объект типа WebElement. В свою очередь, объект может использоваться с различными стратегиями поиска, такими как идентификатор, имя, имя класса, XPATH и т. Д. Ниже приведен синтаксис команды FindElement в веб-драйвере Selenium.
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Стратегия локатора может иметь любое из следующих значений.
- Я БЫ
- имя
- Имя класса
- Название тэга
- Текст ссылки
- Частичная ссылка
- XPATH
Значение локатора — это уникальное значение, с помощью которого можно идентифицировать веб-элемент. Разработчики и тестировщики обязаны обеспечить уникальную идентификацию веб-элементов с помощью определенных свойств, таких как идентификатор или имя.
Пример:
WebElement loginLink = driver.findElement(By.linkText("Login"));
Синтаксис команды FindElements:
Команда «Найти элементы» принимает в качестве параметра параметр «По объекту» и возвращает список веб-элементов. Он возвращает пустой список, если не найдено элементов, использующих данную стратегию локатора и значение локатора. Ниже приведен синтаксис команды find elements.
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
Пример:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Найти элемент Vs Найти элементы
Ниже приведены основные различия между командами find element и find elements.
Найти элемент | Найти элементы |
---|---|
Возвращает самый первый веб-элемент, если найдено несколько веб-элементов с одним и тем же локатором. | Возвращает список веб-элементов |
Выдает исключение NoSuchElementException, если нет элементов, соответствующих стратегии локатора | Возвращает пустой список, если нет веб-элементов, соответствующих стратегии локатора |
Он найдет только один веб-элемент | Он найдет коллекцию элементов, которые соответствуют стратегии локатора. |
Непригодный | Каждый веб-элемент индексируется с номером, начинающимся с 0, как массив |
Пример: как использовать команду «Найти элемент»
Следующее приложение используется для демонстрации
http://demo.guru99.com/test/ajax.html
Сценарий:
1. Откройте AUT
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("http://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(); } }
Пример: как использовать команду «Найти элементы»
Сценарий:
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("http://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, если не находит элемент, соответствующий критериям.
- Команда «Найти элементы» возвращает пустой список, если нет элементов, соответствующих критериям