XPath-i abil FindElement Selenium

โšก Nutikas kokkuvรตte

XPath-i abil FindElement Selenium identifitseerib lehel รผhe veebielemendi unikaalselt, samas kui FindElements tagastab sobivate elementide tรคieliku loendi. Mรตlemad kรคsud aktsepteerivad By locator objekti, mis hรตlmab ID, Name, Class Name ja XPath strateegiaid.

  • โœ… Pรตhiprintsiip: FindElement tagastab esimese sobiva WebElement'i; FindElements tagastab nullist indekseeritud loendi, nagu massiivi.
  • โš ๏ธ Erandi kรคsitlemine: FindElement viskab NoSuchElementException'i, kui vastet pole, samas kui FindElements tagastab tรผhja loendi vea asemel.
  • ๐Ÿงญ Asukoha strateegiad: Valige ID, nime, klassi nime, sildi nime, lingi teksti, osalise lingi teksti ja XPathi vahel.
  • ๐Ÿงฉ Rakendamise fookus: WebDriveri skriptides elementide usaldusvรครคrseks sihtimiseks edastage By-objekt unikaalse lokaatori vรครคrtusega.
  • ๐Ÿš€ Praktilise rakendamise: Tรถรถ Java Nรคited demonstreerivad raadionupule klรตpsamist ja elementide loendi kordamist demolehel.

XPath-i abil FindElement Selenium

In Selenium Veebidraiver FindElement ja FindElements on pรตhikรคsklused, mida kasutatakse veebielementide leidmiseks lehel enne mis tahes toimingu tegemist, nรคiteks klรตpsamist vรตi teksti sisestamist.

Miks vajate kรคsku Otsi element(id)?

Veebilehega suhtlemiseks peab kasutaja kรตigepealt veebielemendi leidma. Kรคsku โ€žLeia elementโ€ kasutatakse veebilehel รผhe veebielemendi unikaalseks tuvastamiseks, kรคsku โ€žLeia elemendidโ€ aga veebielementide loendi tuvastamiseks. Elementi saab tuvastada mitme abil. lokaliseerimisstrateegiad nรคiteks ID, nimi, klassi nimi, lingi tekst, osaline lingi tekst, sildi nimi ja XPath.

FindElement kรคsu sรผntaks

Allpool on FindElement kรคsu sรผntaks keeles Selenium Veebidraiver:

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

Kรคsk FindElement vรตtab parameetriks objekti By ja tagastab รผhe objekti tรผรผbiga WebElement. Objekti By saab omakorda kasutada koos erinevate lokaliseerimisstrateegiatega, nรคiteks ID, nimi, klassi nimi, XPath jne.

Lokaatori strateegia vรครคrtusteks vรตivad olla jรคrgmised:

  • ID
  • Eesnimi
  • Klassi nimi
  • Sildi nimi
  • tekst link
  • Osaline lingi tekst
  • XPath

Lokaatori vรครคrtus on unikaalne vรครคrtus, mille abil saab veebielementi tuvastada. Arendajate ja testijate kohustus on tagada, et veebielemente saaks teatud omaduste, nรคiteks ID vรตi nime abil รผheselt tuvastada.

Nรคide:

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

Nรคide: otsige elementi Selenium

FindElement kรคsu toimimise demonstreerimiseks kasutatakse jรคrgmist demorakendust:

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

Stsenaarium:

Samm 1: Avage AUT

Samm 2: Leidke ja klรตpsake raadionuppu ning seejรคrel klรตpsake nuppu Kontrolli

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();

}

}

FindElementsi kรคsu sรผntaks

Kui vajate kรตiki lokaatorile vastavaid elemente, mitte ainult esimest, kasutage funktsiooni FindElements. Selle sรผntaks on jรคrgmine:

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

Kรคsk FindElements vรตtab parameetriks objekti By ja tagastab veebielementide loendi. See tagastab tรผhja loendi, kui antud lokaatori strateegia ja vรครคrtuse abil elemente ei leitud.

Nรคide:

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

Nรคide: otsige elemente Selenium

Sama demorakendust kasutatakse selleks, et nรคidata, kuidas FindElements itereerib sobivate elementide loendi รผle.

Stsenaarium:

Samm 1: avage URL testitava rakenduse jaoks

Samm 2: Leia raadionuppude tekst ja prindi see vรคljundkonsoolile

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

Leia element vs Leia elemendid

Allpool on toodud peamised erinevused kรคskude โ€žLeia elementโ€ ja โ€žLeia elemendidโ€ vahel:

Leia element vs Leia elemendid Selenium

Leidke element Otsige elemente
Tagastab esimese veebielemendi, kui sama lokaatoriga on leitud mitu veebielementi. Tagastab veebielementide loendi
Viskab erandi NoSuchElementException, kui lokaatori strateegiale vastavaid elemente pole. Tagastab tรผhja loendi, kui lokaatoristrateegiale vastavaid veebielemente pole
XPathi abil elemendi leidmise funktsioon leiab ainult รผhe veebielemendi See leiab lokaatori strateegiale vastavate elementide kogumi.
Ei kasuta Iga veebielement indekseeritakse numbriga, mis algab nullist, nagu massiivi puhul.

KKK

Kasutama Selenium kaudsed vรตi otsesed ootamised Seega kรผsitleb draiver lehte, kuni element ilmub. Dรผnaamiliste, AJAX-pรตhiste lehtede puhul on kรตige usaldusvรครคrsem lรคhenemisviis selgesรตnalised ootamised WebDriverWaiti ja oodatavate tingimustega.

ID on kiireim ja usaldusvรครคrseim lokaator, kuna brauserid indekseerivad selle otse. CSS-i selektorid on รผldiselt kiiremad kui XPath, seega reserveeri XPath juhtudeks, kus unikaalset ID-d, nime vรตi klassi pole saadaval.

Jah. Tehisintellektil pรตhinevad testimisassistendid saavad DOM-i analรผรผsida ja automaatselt soovitada stabiilseid XPath- vรตi CSS-lokaatoreid, vรคhendades kรคsitsi kontrollimise aega. RevEnne tootmistestide lisamist kontrollisime loodud lokaatorite unikaalsust.

Isetervendavad raamistikud kasutavad tehisintellekti, et tuvastada pรคrast kasutajaliidese muutmist lokaatori rikkeid ja asendada see automaatselt lรคhima sobiva elemendiga. See vรคhendab testide hooldust, mis on tingitud sageli muutuvatest elemendi atribuutidest.

Vรตta see postitus kokku jรคrgmiselt: