Znajdź element za pomocą XPath w Selenium
⚡ Inteligentne podsumowanie
Znajdź element za pomocą XPath w Selenium jednoznacznie identyfikuje pojedynczy element internetowy na stronie, podczas gdy FindElements zwraca pełną listę pasujących elementów. Oba polecenia akceptują obiekt lokalizatora „By” obejmujący strategie ID, Name, Class Name i XPath.
In Selenium Sterownik sieciowy, Znajdź element oraz Znajdź elementy są podstawowymi poleceniami używanymi do lokalizowania elementów internetowych na stronie przed wykonaniem na nich jakiejkolwiek akcji, np. kliknięciem lub wprowadzeniem tekstu.
Dlaczego potrzebujesz polecenia Znajdź element(y)?
Interakcja ze stroną internetową wymaga od użytkownika wcześniejszego zlokalizowania elementu internetowego. Polecenie Znajdź element służy do jednoznacznej identyfikacji jednego elementu internetowego na stronie internetowej, natomiast polecenie Znajdź elementy służy do identyfikacji listy elementów internetowych. Element można zidentyfikować za pomocą wielu strategie lokalizacyjne takie jak ID, nazwa, nazwa klasy, tekst łącza, częściowy tekst łącza, nazwa tagu i XPath.
Składnia polecenia FindElement
Poniżej znajduje się składnia polecenia FindElement w Selenium Sterownik sieciowy:
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Polecenie FindElement przyjmuje obiekt By jako parametr i zwraca pojedynczy obiekt typu WebElement. Obiekt By z kolei może być używany z różnymi strategiami lokalizacyjnymi, takimi jak ID, Nazwa, Nazwa klasy, XPath itp.
Strategia lokalizatora może przyjmować dowolną z następujących wartości:
- ID
- Imię i nazwisko
- Nazwa klasy
- Nazwa znacznika
- link Text
- Częściowy tekst linku
- XPath
Wartość lokalizatora to unikalna wartość, za pomocą której można zidentyfikować element sieciowy. Obowiązkiem programistów i testerów jest upewnienie się, że elementy sieciowe są jednoznacznie identyfikowalne za pomocą określonych właściwości, takich jak identyfikator lub nazwa.
Przykład:
WebElement loginLink = driver.findElement(By.linkText("Login"));
Przykład: Znajdź element w Selenium
Poniższa aplikacja demonstracyjna pokazuje działanie polecenia FindElement:
https://demo.guru99.com/test/ajax.html
Scenariusz:
Krok 1: Otwórz AUT
Krok 2: Znajdź i kliknij przycisk opcji, a następnie kliknij przycisk Sprawdź
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();
}
}
Składnia polecenia FindElements
Jeśli potrzebujesz wszystkich elementów pasujących do lokalizatora, a nie tylko pierwszego, użyj funkcji FindElements. Poniżej znajduje się jej składnia:
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
Polecenie FindElements przyjmuje obiekt By jako parametr i zwraca listę elementów sieciowych. Zwraca pustą listę, jeśli nie znaleziono żadnych elementów przy użyciu podanej strategii i wartości lokalizatora.
Przykład:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Przykład: Znajdź elementy w Selenium
Ta sama aplikacja demonstracyjna służy do pokazania, w jaki sposób FindElements iteruje listę pasujących elementów.
Scenariusz:
Krok 1: Otwórz URL dla aplikacji testowanej
Krok 2: Znajdź tekst przycisków radiowych i wydrukuj go na konsoli wyjściowej
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"));
}
}
}
Znajdź element vs Znajdź elementy
Poniżej przedstawiono najważniejsze różnice między poleceniami Znajdź element i Znajdź elementy:
| Znajdź element | Znajdź elementy |
|---|---|
| Zwraca pierwszy element sieciowy, jeśli znaleziono wiele elementów sieciowych z tym samym lokalizatorem | Zwraca listę elementów internetowych |
| Zgłasza wyjątek NoSuchElementException, jeśli nie ma elementów pasujących do strategii lokalizatora | Zwraca pustą listę, jeśli nie ma elementów internetowych pasujących do strategii lokalizatora |
| Funkcja Znajdź element za pomocą XPath znajdzie tylko jeden element sieciowy | Znajdzie zbiór elementów pasujących do strategii lokalizatora |
| Nie dotyczy | Każdy element sieci jest indeksowany numerem zaczynającym się od 0, tak jak tablica |


