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.
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:
| 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. |


