FindElement за допомогою XPath у Selenium
⚡ Розумний підсумок
FindElement за допомогою XPath у Selenium унікально ідентифікує окремий веб-елемент на сторінці, тоді як FindElements повертає повний список відповідних елементів. Обидві команди приймають об'єкт локатора By, який охоплює стратегії ID, Name, Class Name та XPath.
In Selenium Вебдрайвер, ЗнайтиЕлемент та ЗнайтиЕлементи – це основні команди, що використовуються для визначення місцезнаходження веб-елементів на сторінці, перш ніж над ними можна буде виконати будь-яку дію, таку як клацання або введення тексту.
Для чого потрібна команда «Знайти елементи»?
Взаємодія з веб-сторінкою вимагає від користувача спочатку знаходження веб-елемента. Команда «Знайти елемент» використовується для унікальної ідентифікації одного веб-елемента на веб-сторінці, тоді як команда «Знайти елементи» використовується для визначення списку веб-елементів. Елемент можна ідентифікувати за допомогою кількох стратегії локатора такі як ідентифікатор, ім'я, назва класу, текст посилання, частковий текст посилання, назва тегу та XPath.
Синтаксис команди FindElement
Нижче наведено синтаксис команди FindElement у Selenium WebDriver:
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Команда FindElement приймає об'єкт By як параметр і повертає один об'єкт типу WebElement. Об'єкт By, у свою чергу, може використовуватися з різними стратегіями локатора, такими як ID, Name, Class Name, XPath тощо.
Стратегія локатора може приймати будь-яке з наступних значень:
- ID
- ІМ'Я
- Назва класу
- Назва тегу
- текст посилання
- Частковий текст посилання
- XPath
Значення локатора – це унікальне значення, за допомогою якого можна ідентифікувати веб-елемент. Розробники та тестувальники несуть відповідальність за те, щоб веб-елементи можна було однозначно ідентифікувати за допомогою певних властивостей, таких як ID або Name.
приклад:
WebElement loginLink = driver.findElement(By.linkText("Login"));
Приклад: знайти елемент у Selenium
Наступний демонстраційний додаток використовується для демонстрації команди FindElement у дії:
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
Коли вам потрібні всі елементи, що відповідають локатору, а не лише перший, використовуйте FindElements. Нижче наведено його синтаксис:
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
Команда FindElements приймає об'єкт By як параметр і повертає список веб-елементів. Вона повертає порожній список, якщо за заданою стратегією локатора та значенням локатора не знайдено жодних елементів.
приклад:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Приклад: знайти елементи в Selenium
Той самий демонстраційний додаток використовується для демонстрації того, як FindElements перебирає список відповідних елементів.
Сценарій:
Крок 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("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, як і масив |


