FindElement per XPath in Selenium

โšก Intelligente Zusammenfassung

FindElement per XPath in Selenium FindElements identifiziert ein einzelnes Web-Element auf einer Seite eindeutig, wรคhrend FindElements eine vollstรคndige Liste รผbereinstimmender Elemente zurรผckgibt. Beide Befehle akzeptieren ein By-Locator-Objekt, das die Strategien ID, Name, Klassenname und XPath unterstรผtzt.

  • โœ… Kernprinzip: FindElement gibt das erste รผbereinstimmende WebElement zurรผck; FindElements gibt eine Liste zurรผck, die bei Null indiziert ist, wie ein Array.
  • โš ๏ธ Ausnahmebehandlung: FindElement lรถst eine NoSuchElementException aus, wenn keine รœbereinstimmung gefunden wird, wรคhrend FindElements eine leere Liste zurรผckgibt, anstatt einen Fehler auszulรถsen.
  • ๐Ÿงญ Ortungsstrategien: Wรคhlen Sie zwischen ID, Name, Klassenname, Tag-Name, Linktext, Teillinktext und XPath.
  • ๐Ÿงฉ Schwerpunkt der Umsetzung: รœbergeben Sie ein By-Objekt mit einem eindeutigen Locator-Wert, um Elemente in WebDriver-Skripten zuverlรคssig anzusprechen.
  • ๐Ÿš€ Praktische Anwendung: Zusammen Arbeiten Java Die Beispiele veranschaulichen das Anklicken eines Optionsfelds und das Durchlaufen einer Liste von Elementen auf einer Demoseite.

FindElement per XPath in Selenium

In Selenium WebDriver, FindElement und FindElements Dies sind die Kernbefehle, mit denen Webelemente auf einer Seite lokalisiert werden, bevor Aktionen wie Klicks oder Texteingaben darauf ausgefรผhrt werden kรถnnen.

Warum benรถtigen Sie den Befehl โ€žElement(e) suchenโ€œ?

Die Interaktion mit einer Webseite erfordert, dass der Benutzer zunรคchst das gewรผnschte Webelement findet. Der Befehl โ€žElement suchenโ€œ dient dazu, ein einzelnes Webelement auf der Webseite eindeutig zu identifizieren, wรคhrend der Befehl โ€žElemente suchenโ€œ eine Liste von Webelementen anzeigt. Ein Element kann mithilfe mehrerer Befehle identifiziert werden. Ortungsstrategien wie z.B. ID, Name, Klassenname, Linktext, Teillinktext, Tag-Name und XPath.

Syntax des FindElement-Befehls

Nachfolgend finden Sie die Syntax des Befehls FindElement in Selenium WebDriver:

WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));

Der Befehl FindElement verwendet das By-Objekt als Parameter und gibt ein einzelnes Objekt vom Typ WebElement zurรผck. Das By-Objekt kann wiederum mit verschiedenen Suchstrategien wie ID, Name, Klassenname, XPath usw. verwendet werden.

Die Locator-Strategie kann einen der folgenden Werte annehmen:

  • ID
  • Name
  • Klassenname
  • Verlinke den Namen
  • Link Text
  • Teilweiser Linktext
  • XPath

Der Locatorwert ist der eindeutige Wert, anhand dessen ein Webelement identifiziert werden kann. Es liegt in der Verantwortung von Entwicklern und Testern, sicherzustellen, dass Webelemente mithilfe bestimmter Eigenschaften wie ID oder Name eindeutig identifizierbar sind.

Ejemplo:

WebElement loginLink = driver.findElement(By.linkText("Login"));

Beispiel: Element suchen in Selenium

Die folgende Demo-Anwendung dient zur Veranschaulichung des Befehls FindElement:

https://demo.guru99.com/test/ajax.html

Szenario:

Schritt 1: ร–ffnen Sie das AUT

Schritt 2: Suchen Sie das Optionsfeld, klicken Sie darauf und anschlieรŸend auf die Schaltflรคche โ€žPrรผfenโ€œ.

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

Wenn Sie alle Elemente benรถtigen, die einem Locator entsprechen, und nicht nur das erste, verwenden Sie FindElements. Die Syntax lautet wie folgt:

List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));

Der Befehl FindElements verwendet das By-Objekt als Parameter und gibt eine Liste von Webelementen zurรผck. Er gibt eine leere Liste zurรผck, wenn mit der angegebenen Suchstrategie und dem angegebenen Suchwert keine Elemente gefunden werden.

Ejemplo:

List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));

Beispiel: Elemente suchen in Selenium

Anhand derselben Demo-Anwendung wird gezeigt, wie FindElements eine Liste รผbereinstimmender Elemente durchlรคuft.

Szenario:

Schritt 1: ร–ffnen Sie den Microsoft Store auf Ihrem Windows-PC URL fรผr die zu testende Anwendung

Schritt 2: Ermitteln Sie den Text der Optionsfelder und geben Sie ihn in der Ausgabekonsole aus.

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 finden vs. Elemente finden

Nachfolgend sind die wichtigsten Unterschiede zwischen den Befehlen โ€žElement suchenโ€œ und โ€žElemente suchenโ€œ aufgefรผhrt:

Element finden vs. Elemente finden in Selenium

Element finden Elemente finden
Gibt das erste Webelement zurรผck, falls mehrere Webelemente mit demselben Locator gefunden werden. Gibt eine Liste von Webelementen zurรผck
Wirft die Ausnahme NoSuchElementException, wenn keine Elemente gefunden werden, die der Locator-Strategie entsprechen. Gibt eine leere Liste zurรผck, wenn keine Webelemente vorhanden sind, die der Locator-Strategie entsprechen
Die XPath-Funktion โ€žElement suchenโ€œ findet nur ein Webelement. Es wird eine Sammlung von Elementen finden, die der Locator-Strategie entsprechen.
Nicht zutreffend Jedes Web-Element wird, genau wie bei einem Array, mit einer Zahl ab 0 indiziert.

Hรคufig gestellte Fragen

Arbeiten jederzeit weiterbearbeiten kรถnnen. Jede Prรคsentation und jeder KI-Avatar, den Sie von Grund auf neu erstellen oder hochladen, Selenium implizite oder explizite Wartezeiten Der Treiber fragt die Seite so lange ab, bis das Element erscheint. Explizites Warten mit WebDriverWait und erwarteten Bedingungen ist der zuverlรคssigste Ansatz fรผr dynamische, AJAX-gesteuerte Seiten.

Die ID ist der schnellste und zuverlรคssigste Selektor, da Browser sie direkt indizieren. CSS-Selektoren sind im Allgemeinen schneller als XPath; verwenden Sie XPath daher nur, wenn keine eindeutige ID, kein Name und keine Klasse verfรผgbar ist.

Ja. KI-gestรผtzte Testassistenten kรถnnen das DOM analysieren und automatisch stabile XPath- oder CSS-Locators vorschlagen, wodurch der Zeitaufwand fรผr die manuelle รœberprรผfung reduziert wird. RevDie generierten Locatoren wurden vor dem Hinzufรผgen zu den Produktionstestsuiten auf Eindeutigkeit geprรผft.

Selbstheilende Frameworks nutzen KI, um zu erkennen, wenn ein Locator nach einer UI-ร„nderung nicht mehr funktioniert, und ersetzen ihn automatisch durch das nรคchstliegende passende Element. Dadurch wird der Wartungsaufwand fรผr Tests reduziert, der durch hรคufige ร„nderungen von Elementattributen entsteht.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: