Articles

Find Element in Selenium : Unterschiede zwischen Selenium findElement und findElements

Posted on

Elemente auf der Webseite zu finden, kann aufgrund der Komplexität von Webelementen ein Alptraum sein. Web-Elemente spielen jedoch eine wichtige Rolle bei der Entwicklung und dem Testen jeder Anwendung. Um den Testern die Arbeit zu erleichtern, wird dieser Artikel einen Einblick in Selenium findElement und findElements anhand eines Beispiels geben.

Im Folgenden wird der Artikel behandelt:

  1. Einführung in Selenium findElement
  2. Unterschied zwischen findElement und findElements
  3. Syntax von Selenium findElement
  4. Typen von Locators
  5. Verwendung von Locator Strategie zu findElement

Einführung in Selenium findElement

Die Interaktion mit einer Webseite erfordert, dass der Treiber ein Webelement lokalisiert und entweder ein JavaScript-Ereignis wie einen Klick auslöst, Enter, Select, etc. oder die Eingabe des Feldwertes. Normalerweise beginnt man das automatisierte Testen einer Web-App mit dem Auffinden relevanter Web-Elemente auf der Webseite. Meistens werden solche automatisierten Tests mit Hilfe von Frameworks wie Selenium WebDriver durchgeführt.

Selenium definiert zwei Methoden zur Identifizierung von Webelementen:

  • findElement: Ein Befehl, der zur eindeutigen Identifizierung eines Web-Elements innerhalb der Webseite verwendet wird.
  • findElements: Ein Befehl, der verwendet wird, um eine Liste von Webelementen innerhalb der Webseite zu identifizieren.

Lassen Sie uns den Unterschied zwischen diesen beiden Methoden genauer verstehen.

Unterschied zwischen findElement und findElements

findElement findElements
Gibt das erste übereinstimmende Webelement zurück, wenn mehrere Webelemente vom Locator gefunden werden Gibt eine Liste mit mehreren übereinstimmenden Webelementen zurück
Wirft NoSuchElementException, wenn das Element nicht gefunden wird Gibt eine leere Liste zurück, wenn kein passendes Element gefunden wird
Ermittelt ein eindeutiges Web Element Returnt eine Sammlung von passenden Elementen

Um einige grundlegende Selenium-Befehle zu verstehen, werfen Sie einen Blick auf Grundlegende Befehle von Selenium Webdriver.

Syntax von Selenium findElement

Der Befehl findElement gibt ein Objekt vom Typ WebElement zurück. Er kann verschiedene Locator-Strategien wie ID, Name, ClassName, Linktext, XPath usw. verwenden.

Nachfolgend die Syntax:

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

Die Locator-Strategie umfasst die folgenden Werte.

  1. ID
  2. Name
  3. Klassenname
  4. Tag-Name
  5. Link-Text
  6. XPath

Locator Value ist die eindeutige Methode, mit der man das Web-Element leicht identifizieren kann.

Beispiel:

driver.findElement(By.xpath("//input")).sendKeys("Guitar");

Syntax von Selenium findElements

Der Befehl findElements gibt eine leere Liste zurück, wenn mit der angegebenen Locator-Strategie und dem Locator-Wert keine Elemente gefunden werden. Nachfolgend finden Sie die Syntax des findElements-Befehls.

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

Beispiel:

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

Testen Sie Selenium Testing kostenlos

Nun lassen Sie uns tiefer in das Verständnis eintauchen, wie man Webelemente mit Hilfe verschiedener Locatoren findet. Man kann in Selenium auf verschiedene Arten von Locatoren zurückgreifen.

Lassen Sie uns verstehen, wie man Selenium findElement auf verschiedene Arten verwenden kann:

Find by ID

Die ID ist für jedes Element eindeutig definiert und ist die häufigste Art, Elemente mit dem ID Locator zu finden. Wenn eine Website dynamisch generierte IDs hat, dann kann diese Strategie nicht verwendet werden, um ein Element eindeutig zu finden. Es wird jedoch das erste Web-Element zurückgegeben, das mit dem Locator übereinstimmt.

Beispiel: Nehmen wir www.amazon.com zur Automatisierung und zum Auffinden der Elemente. Wenn man durch das Suchfeld navigiert und das Element inspiziert, wird man verschiedene Web-Elemente sehen können, wie im Schnappschuss unten gezeigt.

Wie Sie sehen können, enthält es einen ID-Locator, dessen Wert twotabsearchtextbox ist. Das folgende Snippet verwendet denselben Locator-Wert, um ein Programm zu schreiben.

Find by Name

Dies ist ähnlich wie Find By ID, außer dass der Treiber ein Element anhand des Attributs „name“ anstelle von „id“ sucht.

Beispiel: Betrachten Sie dieselbe amazon-Webseite. Das Suchfeld hat auch einen Namens-Locator, dessen Wert „field-keywords“ ist, wie im Schnappschuss unten gezeigt.

Der gesamte Code bleibt ähnlich wie der des ID-Locators, nur dass der Unterschied in der findElement-Syntax liegt.

elementName = driver.findElement(By.name("field-keywords"))

Finden über LinkText

LinkText ist hilfreich, um Links in einer Webseite zu finden. Es ist die effizienteste Art, Web-Elemente zu finden, die Links enthalten.

Nun suchen Sie einen Link „Returns“, wie unten gezeigt.

Wenn der Tester auf diesen Link stößt und ihn untersucht, findet er den Linktext „Returns“, wie im Schnappschuss unten gezeigt.

Dieser kann einfach durch die Verwendung von Selenium findElement mit der folgenden Syntax gefunden werden:

elementLinktext = driver.findElement(By.linkText("Returns”))

Finden durch CSS Selector

CSS Selector wird verwendet, um Stilregeln für Webseiten bereitzustellen und kann auch verwendet werden, um ein oder mehrere Webelemente zu identifizieren.

Beispiel: Betrachten Sie das gleiche Suchfeld auf der Amazon-Seite. Es hat ein class-Attribut, dessen Wert nav-search-input ist. Mit dem gleichen Wert kann die Selenium findElement-Methode das Element lokalisieren.

elementcss= driver.findElement(By.cssSelector('div.nav-search-input'))

Finden durch XPath

XPath ist eine Technik in Selenium, um durch die HTML-Struktur einer Seite zu navigieren. XPath ermöglicht es Testern, durch die XML-Struktur eines beliebigen Dokuments zu navigieren und kann sowohl auf HTML- als auch auf XML-Dokumente angewendet werden.

Beispiel: Versuchen wir, die gleiche Suchleiste in Amazon mit Hilfe von XPath zu finden. Der Code unten zeigt, dass er einen ID-Locator enthält. Beachten Sie, dass der relative XPath mit ‚//‘ beginnt.

Im Bild unten sieht man ein Input-Tag. Es beginnt mit //input. Hier impliziert //input einen Tag-Namen. Benutzen Sie das Attribut id und übergeben Sie twotabsearchtextbox in einfachen Anführungszeichen als dessen Wert. Dies ergibt den unten gezeigten XPath-Ausdruck:

//input

Nun führen Sie mit der Selenium findElement-Methode den folgenden Code aus:

elementxpath = driver.findElement(By.xpath("//input"))

Selenium-Tests kostenlos auf realen Geräten ausführen

Das Auffinden von Web-Elementen ist die Grundlage für automatisierte Selenium-Tests von Websites und Web-Apps. Um mehr über die Grundlagen von Selenium zu erfahren, werfen Sie einen Blick auf das Selenium WebDriver Tutorial.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.