NajítPrvek pomocí XPath v Selenium
⚡ Chytré shrnutí
NajítPrvek pomocí XPath v Selenium jednoznačně identifikuje jeden webový element na stránce, zatímco FindElements vrací kompletní seznam odpovídajících elementů. Oba příkazy akceptují objekt lokátoru By, který zahrnuje strategie ID, Name, Class Name a XPath.
In Selenium Webový ovladač, NajítPrvek a NajítPrvky jsou základní příkazy používané k vyhledání webových prvků na stránce před provedením jakékoli akce, jako je kliknutí nebo zadání textu.
Proč potřebujete příkaz Najít prvky?
Interakce s webovou stránkou vyžaduje, aby uživatel nejprve webový prvek našel. Příkaz Najít prvek se používá k jednoznačné identifikaci jednoho webového prvku v rámci webové stránky, zatímco příkaz Najít prvky se používá k identifikaci seznamu webových prvků. Prvek lze identifikovat pomocí více strategie lokátoru například ID, název, název třídy, text odkazu, částečný text odkazu, název tagu a XPath.
Syntaxe příkazu FindElement
Níže je uvedena syntaxe příkazu FindElement v Selenium WebDriver:
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Příkaz FindElement bere objekt By jako parametr a vrací jeden objekt typu WebElement. Objekt By lze zase použít s různými strategiemi lokace, jako je ID, název, název třídy, XPath atd.
Strategie lokátoru může nabývat libovolné z následujících hodnot:
- ID
- Jméno
- Jméno třídy
- Název štítku
- Text odkazu
- Částečný text odkazu
- XPath
Hodnota lokátoru je jedinečná hodnota, pomocí které lze identifikovat webový prvek. Je odpovědností vývojářů a testerů zajistit, aby webové prvky byly jedinečně identifikovatelné pomocí určitých vlastností, jako je ID nebo název.
Příklad:
WebElement loginLink = driver.findElement(By.linkText("Login"));
Příklad: Najít prvek v Selenium
Následující demo aplikace ukazuje příkaz FindElement v akci:
https://demo.guru99.com/test/ajax.html
Scénář:
Krok 1: Otevřete AUT
Krok 2: Najděte a klikněte na přepínač a poté klikněte na tlačítko Zaškrtnout
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();
}
}
Syntaxe příkazu FindElements
Pokud potřebujete najít všechny prvky, které odpovídají lokátoru, a ne jen první, použijte funkci FindElements. Níže je uvedena její syntaxe:
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
Příkaz FindElements bere jako parametr objekt By a vrací seznam webových prvků. Pokud s použitím dané strategie lokátoru a hodnoty lokátoru nebyly nalezeny žádné prvky, vrátí prázdný seznam.
Příklad:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Příklad: Najít prvky v Selenium
Stejná demo aplikace se používá k ukázce, jak FindElements iteruje přes seznam odpovídajících prvků.
Scénář:
Krok 1: Otevřete URL pro testovanou aplikaci
Krok 2: Najděte text přepínačů a vytiskněte ho do výstupní konzole
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"));
}
}
}
Najít prvek vs. Najít prvky
Níže jsou uvedeny hlavní rozdíly mezi příkazy Najít prvek a Najít prvky:
| Najít prvek | Najít prvky |
|---|---|
| Vrátí první webový element, pokud je nalezeno více webových elementů se stejným lokátorem. | Vrátí seznam prvků webu |
| Vyvolá výjimku NoSuchElementException, pokud neexistují žádné prvky odpovídající strategii lokátoru. | Vrátí prázdný seznam, pokud neexistují žádné webové prvky odpovídající strategii lokátoru |
| Najít prvek pomocí XPath najde pouze jeden webový prvek | Najde kolekci prvků, které odpovídají strategii lokátoru. |
| Nelze použít | Každý webový prvek je indexován číslem začínajícím od 0, stejně jako pole |


