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


