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")); } } }
Намерете елемент срещу Намерете елементи
По-долу са основните разлики между намиране на елемент и команди за намиране на елементи.
Намерете елемент | Намерете елементи |
---|---|
Връща най-първия уеб елемент, ако има множество уеб елементи, намерени с един и същ локатор | Връща списък с уеб елементи |
Изхвърля изключение NoSuchElementException, ако няма елементи, съответстващи на стратегията за локатор | Връща празен списък, ако няма уеб елементи, съответстващи на стратегията за локатор |
Find element by XPath ще намери само един уеб елемент | Той ще намери колекция от елементи, които съответстват на стратегията на локатора. |
Не е приложимо | Всеки уеб елемент е индексиран с число, започващо от 0 точно като масив |
Oбобщение
- Командата „Намиране на елемент“ връща уеб елемента, който съответства на първия най-голям елемент в уеб страницата.
- Командата Find Elements връща списък с уеб елементи, които отговарят на критериите.
- Намерете елемент от XPath в Selenium командата хвърля NoSuchElementException, ако не намери елемента, отговарящ на критериите.
- Командата Find Elements връща празен списък Selenium ако няма елементи, отговарящи на критериите