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.

  • โœ… Kernprincipe: FindElement retourneert het eerste overeenkomende WebElement; FindElements retourneert een lijst die vanaf nul is geรฏndexeerd, net als een array.
  • โš ๏ธ Afhandeling van uitzonderingen: FindElement genereert een NoSuchElementException als er geen overeenkomst is, terwijl FindElements een lege lijst retourneert in plaats van een foutmelding te geven.
  • ๐Ÿงญ Zoekstrategieรซn: Kies uit ID, Naam, Klasnaam, Tagnaam, Linktekst, Gedeeltelijke linktekst en XPath.
  • ๐Ÿงฉ Implementatiefocus: Geef in WebDriver-scripts op betrouwbare wijze een By-object met een unieke locatorwaarde door aan doelelementen.
  • ๐Ÿš€ Praktische toepassing: Werkzaam Java De voorbeelden laten zien hoe je op een keuzeknop klikt en door een lijst met elementen op een demopagina navigeert.

FindElement door XPath in Selenium

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 versus elementen zoeken in Selenium

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.

Veelgestelde vragen

Gebruik Selenium impliciete of expliciete wachttijden De driver controleert de pagina dus totdat het element verschijnt. Expliciete wachttijden met WebDriverWait en verwachte voorwaarden zijn de meest betrouwbare aanpak voor dynamische, AJAX-gestuurde pagina's.

Een ID is de snelste en meest betrouwbare manier om een โ€‹โ€‹element te lokaliseren, omdat browsers deze direct indexeren. CSS-selectors zijn over het algemeen sneller dan XPath, dus gebruik XPath alleen in gevallen waarin geen unieke ID, naam of klasse beschikbaar is.

Ja. Door AI aangedreven testassistenten kunnen de DOM analyseren en automatisch stabiele XPath- of CSS-locators voorstellen, waardoor de tijd die nodig is voor handmatige inspectie wordt verkort. Review genereerde locators voor uniciteit voordat ze werden toegevoegd aan productietestsuites.

Zelfherstellende frameworks gebruiken AI om te detecteren wanneer een locator niet meer werkt na een wijziging in de gebruikersinterface en vervangen deze automatisch door het meest overeenkomende element. Dit vermindert het onderhoud aan tests dat nodig is om elementkenmerken regelmatig te wijzigen.

Vat dit bericht samen met: