FindElement за допомогою XPath у Selenium

⚡ Розумний підсумок

FindElement за допомогою XPath у Selenium унікально ідентифікує окремий веб-елемент на сторінці, тоді як FindElements повертає повний список відповідних елементів. Обидві команди приймають об'єкт локатора By, який охоплює стратегії ID, Name, Class Name та XPath.

  • ✅ Основний принцип: FindElement повертає перший відповідний WebElement; FindElements повертає список, індексований з нуля, подібно до масиву.
  • ⚠️ Обробка винятків: FindElement викликає NoSuchElementException, коли збіг не існує, тоді як FindElements повертає порожній список замість невдачі.
  • 🧭 Стратегії локатора: Виберіть між ID, Name, Class Name, Tag Name, Text link, Part link та XPath.
  • 🧩 Фокус реалізації: Передайте об'єкт By з унікальним значенням локатора для надійного цільового призначення елементів у скриптах WebDriver.
  • ???? Практичне застосування: Робочий Java У прикладах демонструється натискання перемикача та перебір списку елементів на демонстраційній сторінці.

FindElement за допомогою XPath у Selenium

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

Знайти елемент проти Знайти елементи

Нижче наведено основні відмінності між командами «Знайти елемент» та «Знайти елементи»:

Знайти елемент проти Знайти елементи в Selenium

Знайти елемент Знайти елементи
Повертає перший веб-елемент, якщо знайдено кілька веб-елементів з однаковим локатором Повертає список веб-елементів
Викидає виняток NoSuchElementException, якщо немає елементів, що відповідають стратегії локатора Повертає порожній список, якщо немає веб-елементів, що відповідають стратегії пошуку
Пошук елемента за XPath знайде лише один веб-елемент Він знайде колекцію елементів, що відповідають стратегії локатора
Не застосовується Кожен веб-елемент індексується числом, що починається з 0, як і масив

Поширені запитання

Скористайтеся кнопкою Selenium неявне або явне очікування тому драйвер опитує сторінку, доки не з'явиться елемент. Явне очікування з WebDriverWait та очікуваними умовами є найнадійнішим підходом для динамічних сторінок, керованих AJAX.

Ідентифікатор – це найшвидший і найнадійніший локатор, оскільки браузери індексують його безпосередньо. Селектори CSS, як правило, швидші за XPath, тому зарезервуйте XPath для випадків, коли немає унікального ідентифікатора, імені або класу.

Так. Помічники тестування на базі штучного інтелекту можуть аналізувати DOM та автоматично пропонувати стабільні локатори XPath або CSS, скорочуючи час ручної перевірки. Revпереглядати згенеровані локатори на унікальність, перш ніж додавати їх до наборів тестів для виробництва.

Самовідновлювальні фреймворки використовують штучний інтелект для виявлення збоїв локатора після зміни інтерфейсу користувача та автоматичної заміни його найближчим відповідним елементом. Це зменшує обсяг обслуговування тестування, спричинений частою зміною атрибутів елементів.

Підсумуйте цей пост за допомогою: