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.

  • Osnovni princip: FindElement vraća prvi odgovarajući WebElement; FindElements vraća listu indeksiranu od nule, poput niza.
  • ⚠️ Rukovanje iznimkama: FindElement baca NoSuchElementException kada ne postoji podudaranje, dok FindElements vraća praznu listu umjesto neuspjeha.
  • 🧭 Strategije lokatora: Odaberite između ID-a, Naziva, Naziva klase, Naziva oznake, Teksta poveznice, Djelomičnog teksta poveznice i XPath-a.
  • 🧩 Fokus implementacije: Proslijedite objekt By s jedinstvenom vrijednošću lokatora za pouzdano ciljanje elemenata u WebDriver skriptama.
  • 🚀 Praktična aplikacija: Rad Java Primjeri pokazuju klik na radio gumb i ponavljanje popisa elemenata na demo stranici.

FindElement pomoću XPath-a u Selenium

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 u odnosu na Pronađi elemente u Selenium

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

Pitanja i odgovori

Koristiti Selenium implicitna ili eksplicitna čekanja pa upravljački program ispituje stranicu dok se element ne pojavi. Eksplicitna čekanja s WebDriverWait i očekivanim uvjetima najpouzdaniji su pristup za dinamičke stranice pokretane AJAX-om.

ID je najbrži i najpouzdaniji lokator jer ga preglednici izravno indeksiraju. CSS selektori su općenito brži od XPath-a, stoga XPath rezervirajte za slučajeve kada nije dostupan jedinstveni ID, naziv ili klasa.

Da. Pomoćnici za testiranje pokretani umjetnom inteligencijom mogu analizirati DOM i automatski predložiti stabilne XPath ili CSS lokatore, smanjujući vrijeme ručne provjere. RevPregledajte generirane lokatore radi jedinstvenosti prije nego što ih dodate u produkcijske testne pakete.

Samoobnavljajući okviri koriste umjetnu inteligenciju za otkrivanje prekida lokatora nakon promjene korisničkog sučelja i automatsku zamjenu najbližim odgovarajućim elementom. To smanjuje održavanje testiranja uzrokovano čestim promjenama atributa elemenata.

Sažmite ovu objavu uz: