FindElement door XPath in Selenium
โก Slimme samenvatting
FindElement door XPath in Selenium De functie `findElements` identificeert een enkel webpagina-element uniek, terwijl `findElements` een volledige lijst met overeenkomende elementen retourneert. Beide commando's accepteren een `By`-locatorobject dat ID, Naam, Klassenaam en XPath-strategieรซn omvat.
In Selenium WebDriver, FindElement en Elementen zoeken Dit zijn de kerncommando's die worden gebruikt om webpagina-elementen te lokaliseren voordat er acties, zoals klikken of tekstinvoer, op kunnen worden uitgevoerd.
Waarom heb je de opdracht Element(en) zoeken nodig?
Om met een webpagina te interageren, moet een gebruiker eerst het web-element vinden. De opdracht 'Element zoeken' wordt gebruikt om รฉรฉn specifiek web-element binnen de webpagina te identificeren, terwijl de opdracht 'Elementen zoeken' wordt gebruikt om een โโlijst met web-elementen te identificeren. Een element kan worden geรฏdentificeerd met behulp van meerdere zoektermen. lokalisatiestrategieรซn zoals ID, Naam, Klasnaam, Linktekst, Gedeeltelijke linktekst, Tagnaam en XPath.
FindElement-opdrachtsyntaxis
Hieronder staat de syntaxis van de FindElement-opdracht in Selenium Webstuurprogramma:
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
De FindElement-opdracht neemt het By-object als parameter en retourneert een enkel object van het type WebElement. Het By-object kan vervolgens worden gebruikt met verschillende zoekstrategieรซn, zoals ID, Naam, Klassenaam, XPath, enzovoort.
De locatorstrategie kan een van de volgende waarden aannemen:
- ID
- Naam
- Naam van de klasse
- Tagnaam
- Link Text
- Gedeeltelijke linktekst
- XPath
De locatorwaarde is de unieke waarde waarmee een webpagina-element kan worden geรฏdentificeerd. Het is de verantwoordelijkheid van ontwikkelaars en testers om ervoor te zorgen dat webpagina-elementen uniek identificeerbaar zijn aan de hand van bepaalde eigenschappen, zoals ID of naam.
Voorbeeld:
WebElement loginLink = driver.findElement(By.linkText("Login"));
Voorbeeld: Element zoeken in Selenium
De volgende demo-applicatie wordt gebruikt om de FindElement-opdracht in actie te laten zien:
https://demo.guru99.com/test/ajax.html
Scenario:
Stap 1: Open de AUT
Stap 2: Zoek en selecteer het keuzerondje en klik vervolgens op de knop 'Controleren'.
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-opdrachtsyntaxis
Wanneer je alle elementen nodig hebt die overeenkomen met een locator, in plaats van alleen het eerste element, gebruik dan FindElements. De syntax hiervoor is als volgt:
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
De FindElements-opdracht neemt het By-object als parameter en retourneert een lijst met web-elementen. De lijst wordt leeg gelaten als er geen elementen worden gevonden met de opgegeven zoekstrategie en zoekwaarde.
Voorbeeld:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Voorbeeld: Elementen zoeken in Selenium
Dezelfde demo-applicatie wordt gebruikt om te laten zien hoe FindElements een lijst met overeenkomende elementen doorloopt.
Scenario:
Stap 1: Open de URL voor de te testen applicatie
Stap 2: Zoek de tekst van de keuzeknoppen en print deze naar 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("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"));
}
}
}
Element zoeken versus Elementen zoeken
Hieronder staan โโde belangrijkste verschillen tussen de opdrachten 'Element zoeken' en 'Elementen zoeken':
| Element zoeken | Zoek elementen |
|---|---|
| Retourneert het eerste web-element als er meerdere web-elementen met dezelfde locator worden gevonden. | Retourneert een lijst met webelementen |
| Gooit de 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 |
| De optie 'Element zoeken met XPath' vindt slechts รฉรฉn web-element. | Het zal een verzameling elementen vinden die overeenkomen met de zoekstrategie. |
| Niet van toepassing | Elk webpagina-element wordt geรฏndexeerd met een nummer dat begint bij 0, net als een array. |


