FindElement pomoću XPath-a u Selenium
⚡ Pametni sažetak
FindElement pomoću XPath-a u Selenium jedinstveno identificira jedan web element na stranici, dok FindElements vraća potpuni popis odgovarajućih elemenata. Obje naredbe prihvaćaju objekt lokatora By koji pokriva strategije ID-a, Naziv-a, Naziv-a-klase i XPath-a.
In Selenium WebDriver, PronađiElement i PronađiElemente su osnovne naredbe koje se koriste za lociranje web elemenata na stranici prije nego što se na njima može izvršiti bilo kakva radnja, poput klika ili unosa teksta.
Zašto vam je potrebna naredba Find Element(s)?
Interakcija s web stranicom zahtijeva od korisnika da prvo locira web element. Naredba Pronađi element koristi se za jedinstvenu identifikaciju jednog web elementa unutar web stranice, dok se naredba Pronađi elemente koristi za identifikaciju popisa web elemenata. Element se može identificirati pomoću više strategije lokatora kao što su ID, naziv, naziv klase, tekst poveznice, djelomični tekst poveznice, naziv oznake i XPath.
Sintaksa naredbe FindElement
Ispod je sintaksa naredbe FindElement u Selenium Web Driver:
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Naredba FindElement uzima objekt By kao parametar i vraća jedan objekt tipa WebElement. Objekt By se pak može koristiti s raznim strategijama lokatora kao što su ID, Naziv, Naziv klase, XPath itd.
Strategija lokatora može imati bilo koju od sljedećih vrijednosti:
- ID
- Ime
- Naziv razreda
- Naziv oznake
- Link Text
- Djelomični tekst veze
- XPath
Vrijednost lokatora je jedinstvena vrijednost pomoću koje se web element može identificirati. Odgovornost je programera i testera osigurati da se web elementi mogu jedinstveno identificirati pomoću određenih svojstava kao što su ID ili naziv.
Primjer:
WebElement loginLink = driver.findElement(By.linkText("Login"));
Primjer: Pronađite element u Selenium
Sljedeća demo aplikacija koristi se za prikaz naredbe FindElement u akciji:
https://demo.guru99.com/test/ajax.html
Scenarij:
Korak 1: Otvorite AUT
Korak 2: Pronađite i kliknite radio gumb, a zatim kliknite gumb Provjeri
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();
}
}
Sintaksa naredbe FindElements
Kada vam je potreban svaki element koji odgovara lokatoru, a ne samo prvi, koristite FindElements. U nastavku je njegova sintaksa:
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
Naredba FindElements uzima objekt By kao parametar i vraća popis web elemenata. Vraća prazan popis ako nisu pronađeni elementi pomoću zadane strategije lokatora i vrijednosti lokatora.
Primjer:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Primjer: Pronađite elemente u Selenium
Ista demo aplikacija se koristi za prikaz kako FindElements iterira kroz popis odgovarajućih elemenata.
Scenarij:
Korak 1: Otvorite URL za aplikaciju koja se testira
Korak 2: Pronađite tekst radio gumba i ispišite ga na izlaznu konzolu
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"));
}
}
}
Pronađi element vs. Pronađi elemente
U nastavku su navedene glavne razlike između naredbi Pronađi element i Pronađi elemente:
| Pronađi element | Pronađite elemente |
|---|---|
| Vraća prvi web element ako je pronađeno više web elemenata s istim lokatorom | Vraća popis web elemenata |
| Izbacuje iznimku NoSuchElementException ako nema elemenata koji odgovaraju strategiji lokatora. | Vraća prazan popis ako nema web elemenata koji odgovaraju strategiji lokatora |
| Pronađi element pomoću XPath-a pronaći će samo jedan web element | Pronaći će kolekciju elemenata koji odgovaraju strategiji lokatora |
| Nije primjenjivo | Svaki web element indeksiran je brojem koji počinje od 0, baš kao i niz |


