FindElement за допомогою XPath у Selenium
Для чого потрібна команда «Знайти елементи»?
Взаємодія з веб-сторінкою вимагає, щоб користувач знайшов веб-елемент. Команда «Знайти елемент» використовується для унікальної ідентифікації (одного) веб-елемента на веб-сторінці. Тоді як команда «Знайти елементи» використовується для унікальної ідентифікації списку веб-елементів на веб-сторінці. Існує кілька способів унікальної ідентифікації веб-елемента на веб-сторінці, наприклад ID, ім’я, ім’я класу, текст посилання, частковий текст посилання, ім’я тегу та XPATH.
Синтаксис команди FindElement
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Selenium Команда Find Element приймає об’єкт By як параметр і повертає об’єкт типу list WebElement Selenium. За об’єктом, у свою чергу, можна використовувати з різними стратегіями пошуку, такими як пошук елемента за ідентифікатором Selenium, ім’я, ім’я класу, XPATH тощо. Нижче наведено синтаксис команди FindElement у Selenium веб-драйвер.
Стратегія локатора може мати будь-яке з наведених нижче значень.
- ID
- Selenium знайти елемент за назвою
- Назва класу
- Назва тегу
- текст посилання
- Частковий текст посилання
- XPATH
Значення локатора – це унікальне значення, за допомогою якого можна ідентифікувати веб-елемент. Відповідальність розробників і тестувальників полягає в тому, щоб переконатися, що веб-елементи можна унікально ідентифікувати за допомогою певних властивостей, таких як ідентифікатор або ім’я.
приклад:
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"));
FindElements в 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, якщо немає елементів, що відповідають стратегії локатора | Повертає порожній список, якщо немає веб-елементів, що відповідають стратегії пошуку |
Знайти елемент за допомогою XPath знайде лише один веб-елемент | Він знайде набір елементів, які відповідають стратегії локатора. |
Не застосовується | Кожен веб-елемент індексується числом, починаючи з 0, як масив |
Підсумки
- Команда «Знайти елемент» повертає веб-елемент, який відповідає першому найбільшому елементу на веб-сторінці.
- Команда «Знайти елементи» повертає список веб-елементів, які відповідають критеріям.
- Знайти елемент за XPath в Selenium команда викидає NoSuchElementException, якщо не знаходить елемент, який відповідає критеріям.
- Команда «Знайти елементи» повертає порожній список Selenium якщо немає елементів, що відповідають критеріям