XPath általi FindElement in Selenium

⚡ Okos összefoglaló

XPath általi FindElement in Selenium egyedileg azonosít egyetlen webes elemet egy oldalon, míg a FindElements a megfelelő elemek teljes listáját adja vissza. Mindkét parancs elfogad egy By locator objektumot, amely ID, Name, Class Name és XPath stratégiákat fed le.

  • Alapelv: A FindElement függvény visszaadja az első egyező WebElement elemet; a FindElements függvény pedig egy nullától indexelt listát ad vissza, mint egy tömböt.
  • ⚠️ Kivételek kezelése: A FindElement függvény NoSuchElementException kivételt dob, ha nincs egyezés, míg a FindElements függvény üres listát ad vissza a hiba helyett.
  • 🧭 Helymeghatározási stratégiák: Válasszon az azonosító, név, osztálynév, címkenév, hivatkozásszöveg, részleges hivatkozásszöveg és XPath közül.
  • 🧩 Megvalósítási fókusz: Adjon át egy egyedi lokátorértékkel rendelkező By objektumot az elemek megbízható célzásához a WebDriver szkriptekben.
  • 🚀 Praktikus alkalmazás: Dolgozó Java A példák egy rádiógombra kattintást és az elemek listájának ismétlését mutatják be egy demóoldalon.

XPath általi FindElement in Selenium

In Selenium WebDriver, FindElement és a FindElements azok az alapvető parancsok, amelyek segítségével webes elemeket lehet megtalálni egy oldalon, mielőtt bármilyen műveletet, például kattintást vagy szövegbevitelt lehetne végrehajtani rajtuk.

Miért van szüksége az Elem(ek) keresése parancsra?

Egy weboldallal való interakcióhoz a felhasználónak először meg kell találnia a webes elemet. Az Elem keresése parancs egy webes elem egyedi azonosítására szolgál a weboldalon belül, míg az Elemek keresése parancs webes elemek listájának azonosítására szolgál. Egy elem több elem segítségével is azonosítható. lokátor stratégiák például azonosító, név, osztálynév, hivatkozás szövege, részleges hivatkozás szövege, címke neve és XPath.

FindElement parancs szintaxisa

Az alábbiakban a FindElement parancs szintaxisa látható a következőben: Selenium WebDriver:

WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));

A FindElement parancs paraméterként a By objektumot veszi át, és egyetlen WebElement típusú objektumot ad vissza. A By objektum viszont különféle helymeghatározó stratégiákkal használható, például ID, Name, Class Name, XPath stb.

A Lokátorstratégia értéke a következő lehet:

  • ID
  • Név
  • Osztály név
  • Címke neve
  • Link szövege
  • Részleges hivatkozás szövege
  • XPath

A lokátorérték az az egyedi érték, amellyel egy webes elem azonosítható. A fejlesztők és tesztelők felelőssége annak biztosítása, hogy a webes elemek bizonyos tulajdonságok, például az azonosító vagy a név segítségével egyedileg azonosíthatók legyenek.

Példa:

WebElement loginLink = driver.findElement(By.linkText("Login"));

Példa: Elem keresése itt Selenium

A következő demó alkalmazás a FindElement parancs működésének bemutatására szolgál:

https://demo.guru99.com/test/ajax.html

Forgatókönyv:

Lépés 1: Nyissa meg az AUT-t

Lépés 2: Keresse meg és kattintson a választógombra, majd kattintson az Ellenőrzés gombra

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 parancs szintaxisa

Ha minden olyan elemre szüksége van, amely egy lokátorhoz illeszkedik, nem csak az elsőre, használja a FindElements függvényt. Az alábbiakban a szintaxisa látható:

List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));

A FindElements parancs paraméterként a By objektumot veszi át, és webelemek listáját adja vissza. Üres listát ad vissza, ha a megadott lokátorstratégiával és lokátorértékkel nem találhatók elemek.

Példa:

List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));

Példa: Elemek keresése itt Selenium

Ugyanez a demó alkalmazás mutatja be, hogyan halad végig a FindElements az egyező elemek listáján.

Forgatókönyv:

Lépés 1: Nyissa meg a URL Tesztelés alatt álló alkalmazáshoz

Lépés 2: Keresd meg a rádiógombok szövegét, és írd ki a kimeneti konzolra.

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

Elem keresése vs. Elemek keresése

Az alábbiakban a Find Element és az Find Elements parancsok közötti főbb különbségeket láthatjuk:

Elem keresése vs. Elemek keresése Selenium

Keresse meg az elemet Keresse meg az elemeket
Az első webes elemet adja vissza, ha több webes elem található ugyanazzal a lokátorral. A webes elemek listáját adja vissza
A NoSuchElementException kivételt dobja, ha nincsenek a lokátor stratégiának megfelelő elemek. Üres listát ad vissza, ha nincsenek a helymeghatározó stratégiának megfelelő webelemek
Az XPath által keresett elem csak egy webes elemet talál Olyan elemek gyűjteményét fogja megtalálni, amelyek megfelelnek a lokátor stratégiájának.
Nem alkalmazható Minden webes elem egy 0-tól kezdődő számmal van indexelve, akárcsak egy tömb esetében.

GYIK

Felhasználás Selenium implicit vagy explicit várakozások Tehát a meghajtó lekérdezi az oldalt, amíg az elem meg nem jelenik. A WebDriverWait metódussal történő explicit várakozás és a várható feltételek a legmegbízhatóbb megközelítés a dinamikus, AJAX-vezérelt oldalak esetében.

Az ID a leggyorsabb és legmegbízhatóbb helymeghatározó, mivel a böngészők közvetlenül indexelik. A CSS szelektorok általában gyorsabbak, mint az XPath, ezért az XPath-ot azokra az esetekre tartogassuk, amikor nem áll rendelkezésre egyedi ID, Név vagy osztály.

Igen. A mesterséges intelligenciával működő tesztelési asszisztensek elemezhetik a DOM-ot, és automatikusan javasolhatnak stabil XPath vagy CSS lokátorokat, csökkentve ezzel a manuális ellenőrzési időt. RevAz IEW által generált lokátorokat egyediség szempontjából ellenőrizte, mielőtt hozzáadta volna őket az éles tesztkészletekhez.

Az önjavító keretrendszerek mesterséges intelligenciát használnak annak észlelésére, hogy egy felhasználói felület változása után egy lokátor meghibásodik-e, és automatikusan a legközelebbi egyező elemmel helyettesítik. Ez csökkenti az elemattribútumok gyakori változása miatti tesztkarbantartási igényt.

Foglald össze ezt a bejegyzést a következőképpen: