ZoekElementen in Selenium – VindElement door XPath
Waarom heb je de opdracht Element(en) zoeken nodig?
Interactie met een webpagina vereist dat een gebruiker het webelement lokaliseert. De opdracht Element zoeken wordt gebruikt om een (één) webelement op de webpagina uniek te identificeren. Terwijl de opdracht Elementen zoeken wordt gebruikt om de lijst met webelementen op de webpagina uniek te identificeren. Er zijn meerdere manieren om een webelement op de webpagina uniek te identificeren, zoals ID, Naam, Klassenaam, Linktekst, Gedeeltelijke Linktekst, Tagnaam en XPATH.
FindElement-opdrachtsyntaxis
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Selenium De opdracht Element zoeken neemt het object By als parameter en retourneert een object van het type lijst WebElement in Selenium. Per object kan op zijn beurt worden gebruikt met verschillende lokalisatiestrategieën, zoals het vinden van elementen op ID Selenium, Naam, Klassenaam, XPATH enz. Hieronder vindt u de syntaxis van de FindElement-opdracht in Selenium webstuurprogramma.
Locatorstrategie kan een van de volgende waarden hebben.
- ID
- Selenium zoek element op naam
- Naam van de klasse
- Tagnaam
- Link Text
- Gedeeltelijke linktekst
- XPATH
Locatorwaarde is de unieke waarde waarmee een webelement kan worden geïdentificeerd. Het is de verantwoordelijkheid van ontwikkelaars en testers om ervoor te zorgen dat webelementen uniek identificeerbaar zijn met behulp van bepaalde eigenschappen zoals ID of naam.
Voorbeeld:
WebElement loginLink = driver.findElement(By.linkText("Login"));
Voorbeeld: Element zoeken in Selenium
De volgende applicatie wordt gebruikt voor demo-doeleinden
http://demo.guru99.com/test/ajax.html
Scenario:
Stap 1: Open de AUT
Stap 2: Zoek het keuzerondje en klik erop
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("http://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-opdrachtsyntaxis
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
ZoekElementen in Selenium commando neemt By object als parameter en retourneert een lijst met webelementen. Het retourneert een lege lijst als er geen elementen zijn gevonden met behulp van de opgegeven locatorstrategie en locatorwaarde. Hieronder vindt u de syntaxis van de opdracht Elementen zoeken.
Voorbeeld:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Voorbeeld: Elementen zoeken in Selenium
Scenario:
Stap 1: Open de URL voor Toepassing die wordt getest
Stap 1: Zoek de tekst van de keuzerondjes en druk deze af op de uitvoerconsole
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("http://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")); } } }
Vind element versus Vind elementen
Hieronder staan de belangrijkste verschillen tussen de opdrachten voor het zoeken naar elementen en het zoeken naar elementen.
Element zoeken | Zoek elementen |
---|---|
Retourneert het eerste webelement als er meerdere webelementen zijn gevonden met dezelfde locator | Retourneert een lijst met webelementen |
Genereert uitzondering NoSuchElementException als er geen elementen zijn die overeenkomen met de locatorstrategie | Retourneert een lege lijst als er geen webelementen zijn die overeenkomen met de locatorstrategie |
Element zoeken via XPath vindt slechts één webelement | Er wordt een verzameling elementen gevonden die overeenkomen met de locatorstrategie. |
Niet van toepassing | Elk webelement wordt geïndexeerd met een nummer dat begint bij 0, net als bij een array |
Samenvatting
- De opdracht Element zoeken retourneert het webelement dat overeenkomt met het eerste element op de webpagina.
- De opdracht Elementen zoeken retourneert een lijst met webelementen die aan de criteria voldoen.
- Zoek Element van XPath in Selenium opdracht genereert NoSuchElementException als het element niet wordt gevonden dat aan de criteria voldoet.
- De opdracht Elementen zoeken retourneert een lege lijst in Selenium als er geen elementen zijn die aan de criteria voldoen