FindElement чрез XPath в Selenium

Защо ви е необходима командата Find Element(s)?

Взаимодействието с уеб страница изисква потребителят да намери уеб елемента. Командата Find Element се използва за уникално идентифициране на (един) уеб елемент в рамките на уеб страницата. Като има предвид, че командата Find Elements се използва за уникално идентифициране на списъка с уеб елементи в рамките на уеб страницата. Има множество начини за уникално идентифициране на уеб елемент в рамките на уеб страницата, като ID, име, име на клас, текст на връзката, частичен текст на връзката, име на етикет и XPATH.

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

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

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

Стратегията на локатора може да бъде всяка от следните стойности.

  • ID
  • Selenium намиране на елемент по име
  • Име на класа
  • Име на маркер
  • Link Текст
  • Частичен текст на връзката
  • XPATH

Стойността на локатора е уникалната стойност, чрез която уеб елемент може да бъде идентифициран. Отговорност на разработчиците и тестерите е да се уверят, че уеб елементите могат да се идентифицират уникално чрез определени свойства като ID или име.

Пример:

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

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

Следното приложение се използва за демонстрационни цели

https://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("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

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

Намерете елементи в Selenium командата приема By обект като параметър и връща списък с уеб елементи. Той връща празен списък, ако няма намерени елементи с помощта на дадена стратегия за локатор и стойност на локатора. По-долу е синтаксисът на командата за намиране на елементи.

Пример:

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

Намерете елемент срещу Намерете елементи

По-долу са основните разлики между намиране на елемент и команди за намиране на елементи.

Намерете елемент срещу Намерете елементи
Намиране на елемент срещу намиране на елементи в Selenium
Намерете елемент Намерете елементи
Връща най-първия уеб елемент, ако има множество уеб елементи, намерени с един и същ локатор Връща списък с уеб елементи
Изхвърля изключение NoSuchElementException, ако няма елементи, съответстващи на стратегията за локатор Връща празен списък, ако няма уеб елементи, съответстващи на стратегията за локатор
Find element by XPath ще намери само един уеб елемент Той ще намери колекция от елементи, които съответстват на стратегията на локатора.
Не е приложимо Всеки уеб елемент е индексиран с число, започващо от 0 точно като масив

Oбобщение

  • Командата „Намиране на елемент“ връща уеб елемента, който съответства на първия най-голям елемент в уеб страницата.
  • Командата Find Elements връща списък с уеб елементи, които отговарят на критериите.
  • Намерете елемент от XPath в Selenium командата хвърля NoSuchElementException, ако не намери елемента, отговарящ на критериите.
  • Командата Find Elements връща празен списък Selenium ако няма елементи, отговарящи на критериите