FindElement af XPath i Selenium

โšก Smart opsummering

FindElement af XPath i Selenium identificerer entydigt et enkelt webelement pรฅ en side, mens FindElements returnerer en komplet liste over matchende elementer. Begge kommandoer accepterer et By locator-objekt, der dรฆkker ID-, navn-, klassenavn- og XPath-strategier.

  • โœ… Kerneprincip: FindElement returnerer det fรธrste matchende WebElement; FindElements returnerer en liste indekseret fra nul, ligesom et array.
  • โš ๏ธ Undtagelseshรฅndtering: FindElement udlรธser NoSuchElementException, nรฅr der ikke findes noget match, hvorimod FindElements returnerer en tom liste i stedet for at fejle.
  • ๐Ÿงญ Lokaliseringsstrategier: Vรฆlg mellem ID, Navn, Klassenavn, Tagnavn, Linktekst, Delvis linktekst og XPath.
  • ๐Ÿงฉ Implementeringsfokus: Send et By-objekt med en unik lokatorvรฆrdi for pรฅlideligt at mรฅlrette elementer i WebDriver-scripts.
  • ๐Ÿš€ Praktisk ansรธgning: Arbejde Java Eksempler demonstrerer, hvordan man klikker pรฅ en radioknap og itererer en liste over elementer pรฅ en demoside.

FindElement af XPath i Selenium

In Selenium WebDriver, FindElement og FindElementer er de centrale kommandoer, der bruges til at finde webelementer pรฅ en side, fรธr nogen handling, sรฅsom et klik eller tekstindtastning, kan udfรธres pรฅ dem.

Hvorfor har du brug for kommandoen Find Element(s)?

Interaktion med en webside krรฆver, at brugeren fรธrst finder webelementet. Kommandoen Find Element bruges til entydigt at identificere รฉt webelement pรฅ websiden, hvorimod kommandoen Find Elementer bruges til at identificere en liste over webelementer. Et element kan identificeres ved hjรฆlp af flere lokaliseringsstrategier sรฅsom ID, Navn, Klassenavn, Linktekst, Delvis Linktekst, Tagnavn og XPath.

FindElement kommandosyntaks

Nedenfor er syntaksen for FindElement-kommandoen i Selenium WebDriver:

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

FindElement-kommandoen tager By-objektet som parameter og returnerer et enkelt objekt af typen WebElement. By-objektet kan til gengรฆld bruges med forskellige locator-strategier sรฅsom ID, Navn, Klassenavn, XPath osv.

Lokaliseringsstrategi kan vรฆre en hvilken som helst af fรธlgende vรฆrdier:

  • ID
  • Navn
  • Klassens navn
  • Tagnavn
  • Link Text
  • Delvis linktekst
  • XPath

Locatorvรฆrdi er den unikke vรฆrdi, som et webelement kan identificeres med. Det er udvikleres og testeres ansvar at sikre, at webelementer er entydigt identificerbare ved hjรฆlp af bestemte egenskaber sรฅsom ID eller navn.

Eksempel:

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

Eksempel: Find element i Selenium

Fรธlgende demoapplikation bruges til at vise FindElement-kommandoen i aktion:

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

Scenario:

Trin 1: ร…bn AUT

Trin 2: Find og klik pรฅ alternativknappen, og klik derefter pรฅ knappen Markรฉr

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 har brug for alle elementer, der matcher en locator, i stedet for kun det fรธrste, skal du bruge FindElements. Nedenfor er syntaksen:

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

Kommandoen FindElements tager By-objektet som parameter og returnerer en liste over webelementer. Den returnerer en tom liste, hvis der ikke findes elementer ved hjรฆlp af den givne locatorstrategi og locatorvรฆrdi.

Eksempel:

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

Eksempel: Find elementer i Selenium

Den samme demoapplikation bruges til at vise, hvordan FindElements itererer over en liste med matchende elementer.

Scenario:

Trin 1: ร…bne URL til applikation under test

Trin 2: Find teksten til radioknapperne og udskriv den pรฅ outputkonsollen

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

Find element vs. Find elementer

Nedenfor er de vigtigste forskelle mellem kommandoerne Find element og Find elementer:

Find element vs. Find elementer i Selenium

Find element Find elementer
Returnerer det fรธrste webelement, hvis der findes flere webelementer med den samme locator Returnerer en liste over webelementer
Kaster undtagelsen NoSuchElementException, hvis der ikke er elementer, der matcher lokaliseringsstrategien. Returnerer en tom liste, hvis der ikke er nogen webelementer, der matcher lokaliseringsstrategien
Find Element via XPath finder kun รฉt webelement Den finder en samling af elementer, der matcher lokaliseringsstrategien.
Gรฆlder ikke Hvert webelement er indekseret med et tal, der starter fra 0, ligesom et array

Ofte Stillede Spรธrgsmรฅl

Brug Selenium implicitte eller eksplicitte ventetider sรฅ driveren afspรธrger siden, indtil elementet vises. Eksplicitte ventetider med WebDriverWait og forventede betingelser er den mest pรฅlidelige tilgang til dynamiske, AJAX-drevne sider.

ID er den hurtigste og mest pรฅlidelige locator, fordi browsere indekserer den direkte. CSS-selektorer er generelt hurtigere end XPath, sรฅ reserver XPath til tilfรฆlde, hvor der ikke er noget unikt ID, navn eller klasse tilgรฆngelig.

Ja. AI-drevne testassistenter kan analysere DOM'en og automatisk foreslรฅ stabile XPath- eller CSS-lokaliseringsvรฆrktรธjer, hvilket reducerer den manuelle inspektionstid. RevSe genererede lokatorer for entydighed, fรธr de tilfรธjes til produktionstestsuiter.

Selvreparerende frameworks bruger AI til at registrere, nรฅr en locator gรฅr i stykker efter en รฆndring af brugergrรฆnsefladen, og erstatter automatisk det element, der matcher tรฆttest. Dette reducerer testvedligeholdelse forรฅrsaget af hyppigt skiftende elementattributter.

Opsummer dette indlรฆg med: