FindElements в Selenium – FindElement от XPath

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

Взаимодействие с веб-страницей требует от пользователя найти веб-элемент. Команда «Найти элемент» используется для уникальной идентификации (одного) веб-элемента на веб-странице. Принимая во внимание, что команда «Найти элементы» используется для уникальной идентификации списка веб-элементов на веб-странице. Существует несколько способов уникальной идентификации веб-элемента на веб-странице, таких как идентификатор, имя, имя класса, текст ссылки, текст частичной ссылки, имя тега и XPATH.

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

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

Команда Selenium Find Element принимает объект By в качестве параметра и возвращает объект списка типов WebElement в Selenium. По объекту, в свою очередь, можно использовать различные стратегии локатора, такие как поиск элемента по идентификатору Selenium, имени, имени класса, XPATH и т. д. Ниже приведен синтаксис команды FindElement в веб-драйвере Selenium.

Стратегия локатора может быть любой из следующих:wing значения.

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

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

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

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

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

Фоллоwing приложение используется в демонстрационных целях

http://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("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();

}

}

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

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

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

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

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

Пример: поиск элементов в Selenium

Сценарий:

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

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

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"));
    }
  }
}

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

Ниже приведены основные различия между командами find element и find elements.

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

Итоги

  • Команда «Найти элемент» возвращает веб-элемент, соответствующий первому элементу на веб-странице.
  • Команда «Найти элементы» возвращает список веб-элементов, соответствующих критериям.
  • Команда «Найти элемент по XPath в Selenium» выдает исключение NoSuchElementException, если не находит элемент, соответствующий критериям.
  • Команда «Найти элементы» возвращает пустой список в Selenium, если нет элементов, соответствующих критериям.