Locators in Selenium
โก Intelligente Zusammenfassung
Locators in Selenium Befehle weisen die Automatisierungs-Engine an, GUI-Elemente wie Textfelder, Schaltflรคchen und Kontrollkรคstchen zu identifizieren. Diese Referenz erlรคutert die Locator-Typen ID, Name, Linktext, DOM und XPath anhand praktischer Beispiele, Syntaxregeln und Auswahlstrategien fรผr zuverlรคssige Webautomatisierungsskripte.

Was sind Locatoren in Selenium?
Ein Locator ist ein Befehl, der steuert Selenium IDE oder Selenium WebDriver steuert das richtige GUI-Element an, beispielsweise ein Textfeld, eine Schaltflรคche, einen Link oder eine Checkbox, auf dem eine Aktion ausgefรผhrt werden soll. Die Identifizierung des richtigen GUI-Elements ist eine Grundvoraussetzung fรผr jedes zuverlรคssige Automatisierungsskript. Die korrekte Identifizierung ist jedoch schwieriger als gedacht. Manchmal interagiert man versehentlich mit dem falschen Element oder gar keinem. Um dies zu vermeiden, Selenium bietet eine Vielzahl von Lokalisierungsstrategien, die eine prรคzise Ansteuerung von GUI-Elementen ermรถglichen.
Wรคhrend einige Befehle, wie beispielsweise der Befehl โopenโ, keinen Locator benรถtigen, ist die Mehrheit der Befehle ohne Locator erforderlich. Selenium Befehle hรคngen von Element-Locators ab. Die Wahl des Locators hรคngt maรgeblich von Ihrer zu testenden Anwendung (AUT) ab. In diesem Tutorial werden wir abwechselnd auf Facebook und dem Mercury Die Demo-Website fรผr Touren (newtours.demoaut) basiert darauf, welche Ortungsfunktionen die einzelnen Anwendungen unterstรผtzen. Ebenso in Ihrer eigenen testing Im Projekt wรคhlen Sie einen Element-Locator aus in Selenium WebDriver basiert auf der Struktur Ihrer Anwendung.
Lokalisierung anhand der ID
Dies ist die gรคngigste Methode, um Elemente zu lokalisieren, da IDs fรผr jedes Element auf einer Seite eindeutig sein sollen. Wenn ein ID-Attribut vorhanden ist, sollte es Ihre erste Wahl fรผr schnelle, stabile und gut lesbare Testskripte sein.
Target Format: id=id des Elements
In diesem Beispiel verwenden wir eine Facebook-Demoseite, weil Mercury Tours verwendet keine ID-Attribute fรผr seine Hauptformularfelder.
Schritt 1) Nutzen Sie diese Demoseite https://demo.guru99.com/test/facebook.html Zum Testen. Untersuchen Sie das Textfeld โE-Mail oder Telefonโ mit den integrierten Entwicklertools Ihres Browsers (drรผcken Sie F12 in Chrome, Edge oder Windows Explorer). Firefox) und notieren Sie sich die zugehรถrige ID. In diesem Fall lautet die ID โE-Mailโ.
Schritt 2) Start Selenium IDE und geben Sie โid=emailโ in das Target Klicken Sie auf die Schaltflรคche โSuchenโ und beachten Sie, dass das Textfeld โE-Mail oder Telefonโ gelb mit grรผnem Rand hervorgehoben ist, was darauf hinweist, dass Selenium Die IDE hat das Element korrekt lokalisiert.
Nach Namen suchen
Das Auffinden von Elementen anhand ihres Namens รคhnelt dem Auffinden anhand ihrer ID, mit dem Unterschied, dass wir die โname=โ Stattdessen ein Prรคfix verwenden. Dieser Ansatz ist nรผtzlich, wenn Elemente keine ID, aber ein definiertes Namensattribut besitzen.
Target Format: name=Name des Elements
Fรผr die folgende Demonstration werden wir verwenden Mercury Touren, weil alle wichtigen Formularelemente der Website ein Namensattribut tragen.
Schritt 1) Navigieren https://demo.guru99.com/test/newtours/ Untersuchen Sie mithilfe der Entwicklertools Ihres Browsers das Textfeld โBenutzernameโ. Notieren Sie sich dessen Namensattribut.
Hier lautet der Name des Elements โuserNameโ.
Schritt 2) In Selenium IDE, geben Sie โname=userNameโ in das Target und klicken Sie auf die Schaltflรคche Suchen. Selenium Die IDE sollte das Textfeld fรผr den Benutzernamen durch Hervorheben finden.
So finden Sie Elemente anhand des Namens mithilfe von Filtern
Filter sind dann nรผtzlich, wenn mehrere Elemente das gleiche Namensattribut gemeinsam haben. Filter sind zusรคtzliche Attribute, die dazu dienen, Elemente mit identischem Namen zu unterscheiden. Ohne Filter, Selenium wรผrde standardmรครig nur das erste รผbereinstimmende Element berรผcksichtigen.
Target Format: name=name_of_the_element filter=value_of_filter
Lassen Sie uns ein Beispiel durchgehen.
Schritt 1) Einloggen bei Mercury Touren.
Anmelden bei Mercury Bei Touren, die sowohl den Benutzernamen als auch das Passwort โtutorialโ verwenden, sollte die Flugsuche-Seite wie unten dargestellt erscheinen.
Schritt 2) Verwenden Sie die Entwicklertools, um die VALUE-Attribute zu untersuchen.
Beachten Sie, dass die Optionsfelder โHin- und Rรผckfahrtโ und โEinfache Fahrtโ denselben Namen โtripTypeโ tragen. Sie haben jedoch unterschiedliche VALUE-Attribute, sodass wir jeden Wert als Filter verwenden kรถnnen.
Schritt 3) Klicken Sie im Editor auf die erste Zeile.
- Wir werden zuerst auf die Option โEinbahnstraรeโ zugreifen. Klicken Sie auf die erste Zeile im Selenium IDE-Editor.
- Geben Sie im Befehlsfeld den Befehl โclickโ ein.
- Im Target Geben Sie im Feld โname=tripType value=onewayโ ein. Der Teil โvalue=onewayโ dient als Filter.
Schritt 4) Klicken Sie auf die Schaltflรคche โSuchenโ.
Beachte das Selenium Die IDE hebt den Optionsbutton โEinwegโ grรผn hervor und bestรคtigt damit, dass das Element erfolgreich รผber sein VALUE-Attribut aufgerufen wurde.
Schritt 5) Wรคhlen Sie die Option โEinwegโ.
Drรผcken Sie die Taste โXโ auf Ihrer Tastatur, um den Klickbefehl auszufรผhren. Die Option โEinwegโ ist nun ausgewรคhlt.
Sie kรถnnen die gleiche Aktion auch mit dem Optionsfeld โRound Tripโ durchfรผhren, diesmal jedoch mit โname=tripType value=roundtripโ als Ziel.
Suchen nach Linktext
Diese Locator-Strategie ist nur fรผr Hyperlink-Texte anwendbar. Wir greifen auf den Link zu, indem wir dem Zieltext โlink=โ voranstellen, gefolgt vom sichtbaren Hyperlink-Text. Diese Methode ist gut lesbar und eignet sich hervorragend fรผr Navigationstests.
Target Format: link=link_text
Im folgenden Beispiel greifen wir auf den Link โREGISTRIERENโ zu, der sich auf der Mercury Homepage von Tours.
Schritt 1)
- Stellen Sie zunรคchst sicher, dass Sie abgemeldet sind. Mercury Touren.
- Navigieren Sie zu der Mercury Homepage von Tours.
Schritt 2)
- รberprรผfen Sie mithilfe der Entwicklertools den Link โREGISTRIERENโ. Der Linktext befindet sich zwischen dem รถffnenden und dem schlieรenden Anker-Tag.
- In diesem Fall lautet der Linktext โREGISTRIERENโ. Kopieren Sie den Linktext.
Schritt 3) Kopieren Sie den Linktext und fรผgen Sie ihn in Folgendes ein: Selenium IDE Target Feld. Stellen Sie ihm โlink=โ voran.
Schritt 4) Klicken Sie auf die Schaltflรคche โSuchenโ. Selenium Die IDE wird den REGISTER-Link korrekt hervorheben.
Schritt 5) Geben Sie zur weiteren รberprรผfung โclickAndWaitโ in das Befehlsfeld ein und fรผhren Sie es aus. Selenium IDE klickt den Link REGISTRIEREN erfolgreich an und leitet Sie zur unten angezeigten Registrierungsseite weiter.
Suchen nach DOM (Document Object Model)
Das Dokumentobjektmodell (DOM)Vereinfacht ausgedrรผckt beschreibt es, wie HTML-Elemente als Baum von Knoten strukturiert sind. Selenium Die IDE kann durch diese Baumstruktur navigieren, um auf Seitenelemente zuzugreifen. Bei Verwendung dieser Methode wird die Target Die Box beginnt immer mit โdom=documentโฆโ. Das Prรคfix โdom=โ wird รผblicherweise weggelassen, weil Selenium Die IDE interpretiert automatisch jeden Wert, der mit โdocumentโ beginnt, als DOM-Pfad.
Es gibt vier grundlegende Mรถglichkeiten, ein Element im DOM zu finden. Selenium:
- getElementById
- getElementsByName
- dom:name (gilt nur fรผr Elemente innerhalb einer benannten Form)
- dom:index
Lokalisieren nach DOM โ getElementById
Lassen Sie uns zunรคchst die getElementById-Methode des DOM untersuchen. SeleniumDiese Methode gibt ein einzelnes Element zurรผck, indem sie dessen ID-Attribut abgleicht.
Syntax
document.getElementById("id of the element")
- Die ID des Elements entspricht dem Wert des ID-Attributs des Elements, auf das zugegriffen werden soll. Dieser Wert muss immer in Anfรผhrungszeichen gesetzt werden.
Schritt 1) Nutzen Sie diese Demoseite https://demo.guru99.com/test/facebook.htmlNavigieren Sie dorthin und รผberprรผfen Sie mithilfe der Entwicklertools das Kontrollkรคstchen โAngemeldet bleibenโ. Notieren Sie sich dessen ID.
Die zu verwendende ID lautet โpersist_boxโ.
Schritt 2) รffne Selenium IDE und in der Target Geben Sie im Feld document.getElementById(โpersist_boxโ) ein und klicken Sie dann auf Suchen. Selenium Die IDE findet das Kontrollkรคstchen โAngemeldet bleibenโ. Obwohl sie den Inhalt des Kontrollkรคstchens nicht hervorheben kann, umgibt sie das Element mit einem hellgrรผnen Rahmen, wie unten dargestellt.
Lokalisieren nach DOM โ getElementsByName
Die Methode `getElementById` greift jeweils nur auf ein Element zu, nรคmlich das Element mit der angegebenen ID. Die Methode `getElementsByName` verhรคlt sich anders. Sie gibt ein Array von Elementen mit demselben Namen zurรผck. Der Zugriff auf die einzelnen Elemente erfolgt รผber einen numerischen Index, der bei 0 beginnt.
Syntax
document.getElementsByName("name")[index]
- name = Name des Elements, wie durch sein Attribut โnameโ definiert
- index = eine Ganzzahl, die angibt, welches Element im Array von getElementsByName verwendet wird.
Schritt 1) Navigieren Sie zu der Mercury Melden Sie sich auf der Startseite von Tours mit dem Benutzernamen und Passwort โtutorialโ an. Der Browser lรคdt dann die Flugsuche.
Schritt 2) Untersuchen Sie mithilfe der Entwicklertools die drei Optionsfelder am unteren Rand der Seite (Economy-Klasse, Business-Klasse und First-Class). Sie werden feststellen, dass sie alle denselben Namen tragen: โservClassโ.
Schritt 3) Zuerst greifen wir auf den Optionsbutton โEconomy Classโ zu. Von den drei Optionsbuttons erscheint dieser als erster, sein Index ist also 0. Selenium In der IDE geben Sie document.getElementsByName(โservClassโ)[0] ein und klicken auf die Schaltflรคche โSuchenโ. Selenium IDE wird die Optionsschaltflรคche โEconomy-Klasseโ korrekt erkennen.
Schritt 4) รndern Sie die Indexnummer auf 1, damit Ihr Target wird zu document.getElementsByName(โservClassโ)[1]. Klicken Sie auf die Schaltflรคche โSuchenโ und Selenium Die IDE hebt die Optionsschaltflรคche โBusiness Classโ wie unten dargestellt hervor.
Lokalisieren nach DOM โ dom:name
Wie bereits erwรคhnt, ist diese Methode nur anwendbar, wenn sich das Element, auf das Sie zugreifen, in einem benannten Formular befindet. Der Locatorpfad beginnt beim Formular und fรผhrt dann anhand des Namens zum Zielelement.
Syntax
document.forms["name of the form"].elements["name of the element"]
- Name des Formulars = der Wert des Namensattributs des Formular-Tags, das das Element enthรคlt, auf das Sie zugreifen mรถchten.
- Name des Elements = der Wert des Namensattributs des Elements, auf das Sie zugreifen mรถchten
Schritt 1) Navigieren Mercury Touren Homepage https://demo.guru99.com/test/newtours/ Untersuchen Sie mithilfe der Entwicklertools das Textfeld โBenutzernameโ. Beachten Sie, dass es sich in einem Formular mit dem Namen โStartseiteโ befindet.
Schritt 2) In Selenium Geben Sie in der IDE document.forms[โhomeโ].elements[โuserNameโ] ein und klicken Sie auf die Schaltflรคche โSuchenโ. Selenium Die IDE wird erfolgreich auf das Element zugreifen.
Lokalisieren nach DOM โ dom:index
Diese Methode ist auch dann anwendbar, wenn sich das Element nicht in einem benannten Formular befindet, da sie den Index des Formulars anstelle seines Namens verwendet. Dies ist nรผtzlich fรผr รคltere Seiten oder automatisch generierte Formulare, bei denen keine Benennung mรถglich ist.
Syntax
document.forms[index of the form].elements[index of the element]
- Index des Formulars = die Indexnummer (beginnend bei 0) des Formulars in Bezug auf die gesamte Seite
- Index des Elements = die Indexnummer (beginnend bei 0) des Elements in Bezug auf die Form, die es enthรคlt.
Wir werden auf das Textfeld โTelefonโ auf dem Mercury Seite zur Anmeldung fรผr Touren. Das Formular auf dieser Seite hat weder einen Namen noch eine ID und eignet sich daher gut als Beispiel.
Schritt 1) Navigieren Sie zu der Mercury Prรผfen Sie auf der Seite โTourenregistrierungโ das Textfeld โTelefonโ. Beachten Sie, dass das umgebende Formular weder ID- noch Namensattribute aufweist.
Schritt 2) Geben Sie document.forms[0].elements[3] in der Selenium IDE Target und klicken Sie auf die Schaltflรคche Suchen. Selenium Die IDE greift korrekt auf das Textfeld โTelefonโ zu.
Schritt 3) Alternativ kรถnnen Sie anstelle des Index den Namen des Elements verwenden, um dasselbe Ergebnis zu erzielen. Geben Sie dazu document.forms[0].elements[โphoneโ] ein. Target Das Textfeld โTelefonโ bleibt weiterhin hervorgehoben.
Lokalisieren mit XPath
XPath ist die Abfragesprache, die zur Navigation in XML-Knoten (Extensible Markup Language) verwendet wird. Da HTML als eine Implementierung von XML betrachtet werden kann, XPath Kann auch HTML-Elemente finden. Es ist eine der leistungsstรคrksten Suchstrategien in Selenium.
- Vorteil: Es kann auf nahezu jedes Element zugreifen, auch auf solche ohne Klassen-, Namens- oder ID-Attribute.
- Nachteil: Aufgrund ihrer vielen Regeln und Syntaxvarianten ist sie die komplexeste Locator-Strategie.
Die Entwicklertools moderner Browser kรถnnen XPath-Ausdrรผcke automatisch generieren. In Chrome, Edge oder FirefoxKlicken Sie mit der rechten Maustaste auf ein Element im Elementbereich und wรคhlen Sie โKopierenโ > โXPath kopierenโ. Im folgenden Beispiel greifen wir auf ein Bild zu, das mit den zuvor beschriebenen Methoden nicht gefunden werden kann.
Schritt 1) Navigieren Sie zu der Mercury Gehen Sie zur Startseite von Tours und verwenden Sie die Entwicklertools, um das orangefarbene Rechteck rechts neben dem gelben Feld โLinksโ zu untersuchen, wie unten dargestellt.
Schritt 2) Klicken Sie mit der rechten Maustaste auf den HTML-Code des Elements und wรคhlen Sie dann die Option โXPath kopierenโ.
Schritt 3) In Selenium IDEGeben Sie einen einzelnen Schrรคgstrich โ/โ ein in Target Fรผgen Sie dann den im vorherigen Schritt kopierten XPath in das Feld ein. Der Eintrag in der Target Das Feld sollte jetzt mit zwei Schrรคgstrichen โ//โ beginnen.
Schritt 4) Klicken Sie auf die Schaltflรคche โSuchenโ. Selenium Die IDE hebt das orangefarbene Feld hervor, wie unten dargestellt.
Warum die Wahl des richtigen Standortfinders wichtig ist
Die Wahl der richtigen Ortungsstrategie ist eine der einflussreichsten Entscheidungen in Selenium Automatisierung ist wichtig, da sie direkten Einfluss auf die Skriptstabilitรคt, die Ausfรผhrungsgeschwindigkeit und die langfristigen Wartungskosten hat. Ein ungeeigneter Selektor kann zu fehlerhaften Tests, Fehlalarmen und hรคufigen Nacharbeiten bei รnderungen der Benutzeroberflรคche fรผhren. Erfahrene Automatisierungsingenieure empfehlen folgende Reihenfolge: zuerst ID, dann Name, gefolgt von CSS-Selektor, Linktext und schlieรlich XPath.
ID-basierte Selektoren sind am schnellsten, da die Browsersuche fรผr eindeutige Kennungen optimiert ist. Namensbasierte Selektoren sind fast genauso effizient, sofern die Namen eindeutig sind. CSS-Selektoren und XPath bieten Flexibilitรคt, sind aber tendenziell langsamer und anfรคlliger fรผr รnderungen am DOM. Linktext eignet sich hervorragend fรผr Navigationslinks, bietet aber nur begrenzte Wiederverwendbarkeit.
Eine stabile Automatisierung hรคngt auch von der Zusammenarbeit mit Entwicklern ab. Wenn Tester bei Code-Reviews konsistente und aussagekrรคftige IDs oder data-* Attribute anfordern, verbessert sich die Zuverlรคssigkeit der Locators deutlich. Vermeiden Sie automatisch generierte IDs (z. B. von Frameworks), da diese sich zwischen Builds รคndern kรถnnen. Durch die Priorisierung lesbarer, absichtsorientierter Locators kรถnnen Teams die Wartbarkeit ihrer Test-Suites gewรคhrleisten und technische Schulden im Zuge der Anwendungsentwicklung reduzieren.
Best Practices fรผr das Schreiben zuverlรคssiger Standortangaben
Zuverlรคssige Ortungssysteme sind die Grundlage fรผr eine wartungsfรคhige Selenium Testsuite. Die folgenden Vorgehensweisen tragen dazu bei, Skriptfehler zu reduzieren, die Lesbarkeit zu verbessern und die Tests widerstandsfรคhiger gegen รnderungen der Benutzeroberflรคche zu machen.
- Bevorzugen Sie eindeutige IDs: Prรผfen Sie immer zuerst, ob ein ID-Attribut vorhanden ist. IDs sollen innerhalb einer Seite eindeutig sein und sind die performanteste Wahl.
- Verwenden Sie semantische Namen und data-* Attribute: Ermutigen Sie Entwickler, stabile Testattribute wie data-testid oder data-qa hinzuzufรผgen. Diese bleiben auch bei รnderungen an CSS-Klassen konsistent.
- Vermeiden Sie absolute XPath-Ausdrรผcke: Absolute Pfade wie /html/body/div[2]/div[3]/span funktionieren nicht immer. Verwenden Sie relative XPath-Ausdrรผcke mit Attributen wie z. B. //input[@name='userName'].
- Attribute fรผr mehr Prรคzision kombinieren: Wenn ein einzelnes Attribut nicht eindeutig ist, kombinieren Sie mehrere Attribute (zum Beispiel //button[@type='submit' und @name='login']), um das richtige Element anzusprechen.
- Setzen Sie Texte mit Bedacht ein: Locators, die auf sichtbarem Text basieren, kรถnnen bei unterschiedlichen Sprachlokalisierungen zu Problemen fรผhren. Verwenden Sie textbasierte Locators nur, wenn die Inhalte stabil und einsprachig sind.
- Zentralisierung der Standortdaten: Speichern Sie Locators in einer Page Object Model (POM)-Klasse, damit Aktualisierungen an einer zentralen Stelle und nicht in vielen Testskripten vorgenommen werden kรถnnen.
- In den Entwicklertools รผberprรผfen: Bevor Sie einen Locator zu einem Skript hinzufรผgen, testen Sie ihn in der Browserkonsole mit $x(โ//xpathโ) fรผr XPath oder document.querySelector fรผr CSS, um sicherzustellen, dass er genau ein Element zurรผckgibt.
- Vermeiden Sie nach Mรถglichkeit indexbasierte Locators: Indexpositionen wie [3] hรคngen von der Elementreihenfolge ab. Schon geringfรผgige Layoutรคnderungen kรถnnen den Index verschieben und das Skript zum Absturz bringen.
Durch die konsequente Anwendung dieser Vorgehensweisen erstellen Automatisierungsingenieure Testsuiten, die teamรผbergreifend skalierbar sind und hรคufige UI-Updates mit minimalem Wartungsaufwand รผberstehen.





























