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.
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 | 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 |


