FindElement av XPath i Selenium

โšก Smart oppsummering

FindElement av XPath i Selenium identifiserer unikt et enkelt webelement pรฅ en side, mens FindElements returnerer en komplett liste over samsvarende elementer. Begge kommandoene godtar et By locator-objekt som dekker strategier for ID, navn, klassenavn og XPath.

  • โœ… Kjerneprinsipp: FindElement returnerer det fรธrste samsvarende WebElementet; FindElements returnerer en liste indeksert fra null, som en matrise.
  • โš ๏ธ Avvikshรฅndtering: FindElement kaster NoSuchElementException nรฅr det ikke finnes noen treff, mens FindElements returnerer en tom liste i stedet for รฅ feile.
  • ๐Ÿงญ Lokaliseringsstrategier: Velg mellom ID, Navn, Klassenavn, Taggnavn, Lenketekst, Delvis lenketekst og XPath.
  • ๐Ÿงฉ Implementeringsfokus: Send et By-objekt med en unik lokatorverdi for รฅ mรฅlrette elementer pรฅlitelig i WebDriver-skript.
  • ๐Ÿš€ Praktisk anvendelse: Arbeide Java Eksempler demonstrerer hvordan man klikker pรฅ en alternativknapp og itererer en liste over elementer pรฅ en demoside.

FindElement av XPath i Selenium

In Selenium Nettdriver, FinnElement og Finn elementer er kjernekommandoene som brukes til รฅ finne webelementer pรฅ en side fรธr noen handling, for eksempel et klikk eller tekstinntasting, kan utfรธres pรฅ dem.

Hvorfor trenger du kommandoen Finn element(er)?

Interaksjon med en nettside krever at brukeren fรธrst finner webelementet. Kommandoen ยซFinn elementยป brukes til รฅ identifisere ett webelement pรฅ nettsiden, mens kommandoen ยซFinn elementerยป brukes til รฅ identifisere en liste over webelementer. Et element kan identifiseres ved hjelp av flere lokaliseringsstrategier som ID, navn, klassenavn, lenketekst, delvis lenketekst, tagnavn og XPath.

FindElement kommandosyntaks

Nedenfor er syntaksen til FindElement-kommandoen i Selenium WebDriver:

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

FindElement-kommandoen tar By-objektet som parameter og returnerer et enkelt objekt av typen WebElement. By-objektet kan igjen brukes med forskjellige locator-strategier som ID, navn, klassenavn, XPath osv.

Lokaliseringsstrategien kan vรฆre en hvilken som helst av fรธlgende verdier:

  • ID
  • Navn
  • Klassenavn
  • Merkens navn
  • Link Text
  • Delvis lenketekst
  • XPath

Lokaliseringsverdi er den unike verdien som et webelement kan identifiseres med. Det er utvikleres og testeres ansvar รฅ sรธrge for at webelementer er unikt identifiserbare ved hjelp av bestemte egenskaper som ID eller navn.

Eksempel:

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

Eksempel: Finn element i Selenium

Fรธlgende demoprogram brukes til รฅ vise FindElement-kommandoen i aksjon:

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

Scenario:

Trinn 1: ร…pne AUT

Trinn 2: Finn og klikk pรฅ alternativknappen, og klikk deretter pรฅ Merk av-knappen

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 kommandosyntaks

Nรฅr du trenger alle elementene som samsvarer med en locator i stedet for bare det fรธrste, bruk FindElements. Syntaksen er som fรธlger:

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

FindElements-kommandoen tar By-objektet som parameter og returnerer en liste over webelementer. Den returnerer en tom liste hvis det ikke finnes noen elementer ved hjelp av den gitte locator-strategien og locator-verdien.

Eksempel:

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

Eksempel: Finn elementer i Selenium

Den samme demoapplikasjonen brukes til รฅ vise hvordan FindElements itererer over en liste med samsvarende elementer.

Scenario:

Trinn 1: ร…pne URL for applikasjon under testing

Trinn 2: Finn teksten til radioknappene og skriv den ut pรฅ utdatakonsollen

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

Finn element vs. finn elementer

Nedenfor er de viktigste forskjellene mellom kommandoene ยซFinn elementยป og ยซFinn elementerยป:

Finn element vs. Finn elementer i Selenium

Finn element Finn elementer
Returnerer det fรธrste webelementet hvis det finnes flere webelementer med samme locator Returnerer en liste over webelementer
Kaster unntaket NoSuchElementException hvis det ikke finnes noen elementer som samsvarer med lokaliseringsstrategien. Returnerer en tom liste hvis det ikke er noen nettelementer som samsvarer med lokaliseringsstrategien
Finn element med XPath vil bare finne ett webelement Den vil finne en samling av elementer som samsvarer med lokaliseringsstrategien.
IKKE RELEVANT Hvert webelement er indeksert med et tall som starter fra 0, akkurat som en matrise

Spรธrsmรฅl og svar

Bruk Selenium implisitte eller eksplisitte ventinger slik at driveren avspรธr siden til elementet vises. Eksplisitte ventinger med WebDriverWait og forventede betingelser er den mest pรฅlitelige tilnรฆrmingen for dynamiske, AJAX-drevne sider.

ID er den raskeste og mest pรฅlitelige sรธknadsfunksjonen fordi nettlesere indekserer den direkte. CSS-selektorer er generelt raskere enn XPath, sรฅ reserver XPath for tilfeller der ingen unik ID, navn eller klasse er tilgjengelig.

Ja. AI-drevne testassistenter kan analysere DOM-en og foreslรฅ stabile XPath- eller CSS-lokaliseringsverktรธy automatisk, noe som reduserer tiden det tar รฅ inspisere manuelt. RevVis genererte lokatorer for unikhet fรธr de legges til i produksjonstestsuiter.

Selvreparerende rammeverk bruker AI til รฅ oppdage nรฅr en locator brytes etter en endring i brukergrensesnittet, og erstatter automatisk det nรฆrmest samsvarende elementet. Dette reduserer testvedlikehold forรฅrsaket av hyppig endring av elementattributter.

Oppsummer dette innlegget med: