Locators in Selenium
Was sind Locators?
Locator ist ein Befehl, der Auskunft gibt Selenium IDE, welche GUI-Elemente (sagen wir Text Box, Knรถpfe, Karo Boxes usw.), auf die es zugreifen muss. Die Identifizierung der richtigen GUI-Elemente ist eine Voraussetzung fรผr die Erstellung eines Automatisierungsskripts. Die genaue Identifizierung von GUI-Elementen ist jedoch schwieriger, als es klingt. Manchmal arbeiten Sie am Ende mit falschen GUI-Elementen oder gar keinen Elementen! Daher Selenium stellt eine Reihe von Locators zur genauen Lokalisierung eines GUI-Elements bereit
Es gibt Befehle, die keinen Locator benรถtigen (z. B. der Befehl โopenโ). Die meisten von ihnen benรถtigen jedoch Element-Locators Selenium Webtreiber.
Die Wahl des Locators hรคngt weitgehend von Ihrer zu testenden Anwendung ab. In diesem Tutorial werden wir zwischen Facebook, neuen Touren und Demoaut auf der Grundlage der von diesen Anwendungen unterstรผtzten Locators wechseln. Ebenso in Ihrem Tests Im Projekt wรคhlen Sie einen der oben aufgefรผhrten Element-Locators aus Selenium Webdriver, basierend auf Ihrer Anwendungsunterstรผtzung.
Lokalisierung anhand der ID
Dies ist die gebrรคuchlichste Methode zum Auffinden von Elementen, da IDs fรผr jedes Element eindeutig sein sollen.
Target Format: id=id des Elements
Fรผr dieses Beispiel verwenden wir Facebook als Test-App, weil Mercury Touren verwenden keine ID-Attribute.
Schritt 1) Seit der Erstellung dieses Tutorials hat Facebook das Design seiner Anmeldeseite geรคndert. Nutzen Sie diese Demoseite https://demo.guru99.com/test/facebook.html zum Testen. รberprรผfen Sie das Textfeld โE-Mail oder Telefonโ mit Firebug und notieren Sie sich die 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 hervorgehoben und grรผn umrandet wird, was bedeutet, Selenium IDE konnte dieses Element korrekt finden.
Nach Namen suchen
Das Auffinden von Elementen nach Namen ist dem Auffinden nach ID sehr รคhnlich, auรer dass wir das verwenden โname=โ Prรคfix stattdessen.
Target Format: name=Name des Elements
In der folgenden Demonstration verwenden wir nun Mercury Touren, weil alle wichtigen Elemente Namen haben.
Schritt 1) Navigieren https://demo.guru99.com/test/newtours/ und verwenden Sie Firebug, um das Textfeld โBenutzernameโ zu รผberprรผfen. Beachten Sie das Namensattribut.
Hier sehen wir, dass der Name des Elements โuserNameโ ist.
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 โBenutzernameโ durch Hervorheben finden kรถnnen.
So finden Sie Elemente anhand des Namens mithilfe von Filtern
Filter kรถnnen verwendet werden, wenn mehrere Elemente denselben Namen haben. Filter sind zusรคtzliche Attribute, die zur Unterscheidung von Elementen mit demselben Namen verwendet werden.
Target Format: name=name_of_the_element filter=value_of_filter
Sehen wir uns ein Beispiel an -
Schritt 1) Einloggen bei Mercury Touren.
Einloggen bei Mercury Touren mit โTutorialโ als Benutzername und Passwort. Sie sollten dann zur unten angezeigten Seite โFlugfinderโ weitergeleitet werden.
Schritt 2) Verwenden Sie Firebug und verwenden Sie VALUE-Attribute.
Beachten Sie bei Verwendung von Firebug, dass die Optionsfelder โRound Tripโ und โOne Wayโ den gleichen Namen โtripTypeโ haben. Sie haben jedoch unterschiedliche VALUE-Attribute, sodass wir sie jeweils als Filter verwenden kรถnnen.
Schritt 3) Klicken Sie auf die erste Zeile.
- Zuerst greifen wir auf das Optionsfeld โOne Wayโ zu. Klicken Sie im Editor auf die erste Zeile.
- Im Befehlsfeld von Selenium IDE, geben Sie den Befehl โclickโ ein.
- Im Target Geben Sie in das Feld โname=tripType value=onewayโ ein. Der Teil โvalue=onewayโ ist unser Filter.
Schritt 4) Klicken Sie auf die Schaltflรคche โSuchenโ.
Beachte das Selenium Die IDE ist in der Lage, das Optionsfeld โOne Wayโ grรผn hervorzuheben โ was bedeutet, dass wir mithilfe seines VALUE-Attributs erfolgreich auf das Element zugreifen kรถnnen.
Schritt 5) Wรคhlen Sie das Optionsfeld โEinbahnstraรeโ aus.
Drรผcken Sie die Taste โXโ auf Ihrer Tastatur, um diesen Klickbefehl auszufรผhren. Beachten Sie, dass das Optionsfeld โEinbahnstraรeโ ausgewรคhlt wurde.
Mit dem Optionsfeld โRound Tripโ kรถnnen Sie genau das Gleiche tun, diesmal mit โname=tripType value=roundtripโ als Ziel.
Suchen nach Linktext
Diese Art von CSS-Locator in Selenium gilt nur fรผr Hyperlink-Texte. Wir greifen auf den Link zu, indem wir unserem Ziel โlink=โ voranstellen und dann den Hyperlinktext hinzufรผgen.
Target Format: link=link_text
In diesem Beispiel greifen wir auf den Link โREGISTRIERENโ auf der Mercury Homepage von Tours.
Schritt 1)
- Stellen Sie zunรคchst sicher, dass Sie abgemeldet sind von Mercury Touren.
- Gehe zu Mercury Homepage von Tours.
Schritt 2)
- รberprรผfen Sie mit Firebug den Link โREGISTERโ. Der Linktext befindet sich zwischen und-Tags.
- In diesem Fall lautet unser Linktext โREGISTERโ. Kopieren Sie den Linktext.
Schritt 3) Kopieren Sie den Linktext in Firebug und fรผgen Sie ihn ein Selenium IDEs Target Feld. Stellen Sie ihm โlink=โ voran.
Schritt 4) Klicken Sie auf die Schaltflรคche โSuchenโ und beachten Sie das Selenium IDE konnte 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 sollte in der Lage sein, erfolgreich auf den Link โRegistrierenโ zu klicken und Sie zur unten gezeigten Registrierungsseite weiterzuleiten.
Suchen nach DOM (Document Object Model)
Die Dokumentobjektmodell (DOM)Vereinfacht ausgedrรผckt ist dies die Art und Weise, wie HTML-Elemente strukturiert sind. Selenium IDE kann das DOM zum Zugriff auf Seitenelemente verwenden. Wenn wir diese Methode verwenden, Target Die Box beginnt immer mit โdom=documentโฆโ; das Prรคfix โdom=โ wird jedoch normalerweise entfernt, da Selenium IDE ist in der Lage, alles, was mit dem Schlรผsselwort โdocumentโ beginnt, automatisch als Pfad innerhalb des DOM zu interpretieren Selenium egyรฉbkรฉnt.
Es gibt vier grundlegende Mรถglichkeiten, ein Element รผber DOM zu finden Selenium:
- getElementById
- getElementsByName
- dom:name (gilt nur fรผr Elemente innerhalb einer benannten Form)
- dom:index
Lokalisieren nach DOM โ getElementById
Konzentrieren wir uns auf die erste Methode โ die Verwendung der getElementById-Methode von DOM in Selenium. Die Syntax wรคre:
Syntax
document.getElementById("id of the element")
- ID des Elements = Dies ist der Wert des ID-Attributs des Elements, auf das zugegriffen werden soll. Dieser Wert sollte immer in zwei Klammern (โโ) eingeschlossen werden.
Schritt 1) Nutzen Sie diese Demoseite https://demo.guru99.com/test/facebook.html Navigieren Sie dorthin und aktivieren Sie mithilfe von Firebug das Kontrollkรคstchen โAngemeldet bleibenโ. Notieren Sie sich die ID.
Wir kรถnnen sehen, dass die ID, die wir verwenden sollten, โpersist_boxโ ist.
Schritt 2) รffne Selenium IDE und in der Target Geben Sie im Feld โdocument.getElementById(โpersist_boxโ)โ ein und klicken Sie auf โSuchenโ. Selenium Die IDE sollte in der Lage sein, das Kontrollkรคstchen โAngemeldet bleibenโ zu finden. Obwohl es das Innere des Kontrollkรคstchens nicht hervorheben kann, Selenium IDE kann das Element weiterhin mit einem hellgrรผnen Rand umgeben, wie unten gezeigt.
Lokalisieren nach DOM โ getElementsByName
Die Methode getElementById kann jeweils nur auf ein Element zugreifen, und zwar auf das Element mit der von Ihnen angegebenen ID. Die Methode getElementsByName ist anders. Es sammelt ein Array von Elementen mit dem von Ihnen angegebenen Namen. Sie greifen auf die einzelnen Elemente รผber einen Index zu, der bei 0 beginnt.
|
getElementById
|
|
|
getElementsByName
|
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 Mercury Homepage von Tours und melden Sie sich mit โTutorialโ als Benutzername und Passwort an. Firefox sollte Sie zum Flight Finder-Bildschirm fรผhren.
Schritt 2) รberprรผfen Sie mit Firebug die drei Optionsfelder im unteren Teil der Seite (Optionsfelder โEconomy Classโ, โBusiness Classโ und โFirst Classโ). Beachten Sie, dass sie alle denselben Namen haben, nรคmlich โservClassโ.
Schritt 3) Lassen Sie uns zunรคchst auf das Optionsfeld โEconomy Classโ zugreifen. Von allen drei Optionsfeldern steht dieses Element an erster Stelle und hat daher den Index 0. In Selenium Geben Sie in der IDE โdocument.getElementsByName(โservClassโ)[0]โ ein und klicken Sie auf die Schaltflรคche โSuchenโ. Selenium IDE sollte in der Lage sein, das Optionsfeld โEconomy Classโ korrekt zu erkennen.
Schritt 4) รndern Sie die Indexnummer auf 1, damit Ihr Target wird nun document.getElementsByName(โservClassโ)[1]. Klicken Sie auf die Schaltflรคche Suchen und Selenium IDE sollte in der Lage sein, das Optionsfeld โBusiness Classโ hervorzuheben, wie unten gezeigt.
Lokalisieren nach DOM โ dom:name
Wie bereits erwรคhnt, wird diese Methode nur angewendet, wenn das Element, auf das Sie zugreifen, in einem benannten Formular enthalten ist.
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/ und verwenden Sie Firebug, um das Textfeld โBenutzernameโ zu รผberprรผfen. Beachten Sie, dass es in einem Formular mit dem Namen โhomeโ enthalten ist.
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 muss erfolgreich auf das Element zugreifen kรถnnen.
Lokalisieren nach DOM โ dom:index
Diese Methode gilt auch dann, wenn sich das Element nicht in einem benannten Formular befindet, da sie den Index des Formulars und nicht seinen Namen verwendet.
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 das gesamte Formular, das es enthรคlt
Wir greifen auf das Textfeld โTelefonโ zu innerhalb Mercury Seite zur Tourenregistrierung. Das Formular auf dieser Seite hat kein Namens- und ID-Attribut, daher ist dies ein gutes Beispiel.
Schritt 1) Navigieren Mercury รberprรผfen Sie auf der Seite โTourenregistrierungโ das Textfeld โTelefonโ. Beachten Sie, dass das Formular, das es enthรคlt, keine ID- und Namensattribute enthรคlt.
Schritt 2) Geben Sie โdocument.forms[0].elements[3]โ ein Selenium IDEs Target und klicken Sie auf die Schaltflรคche Suchen. Selenium IDE sollte ordnungsgemรคร auf das Textfeld โTelefonโ zugreifen kรถnnen.
Schritt 3) Alternativ kรถnnen Sie den Namen des Elements anstelle seines Index verwenden und das gleiche Ergebnis erhalten. Geben Sie โdocument.forms[0].elements[โphoneโ]โ ein Selenium IDEs Target Feld. Das Textfeld โTelefonโ sollte weiterhin hervorgehoben sein.
Lokalisieren mit XPath
XPath ist die Sprache, die zum Auffinden von XML-Knoten (Extensible Markup Language) verwendet wird. Da HTML als Implementierung von XML betrachtet werden kann, kรถnnen wir es auch verwenden XPath beim Auffinden von HTML-Elementen.
- Vorteil: Es kann auf fast jedes Element zugreifen, auch auf solche ohne Klassen-, Namens- oder ID-Attribute.
- Nachteil: Aufgrund zu vieler unterschiedlicher Regeln und รberlegungen handelt es sich um die komplizierteste Methode zur Identifizierung von Elementen.
Glรผcklicherweise kann Firebug XPath automatisch generieren Selenium Locators. Im folgenden Beispiel greifen wir auf ein Bild zu, auf das mit den zuvor besprochenen Methoden nicht zugegriffen werden kann.
Schritt 1) Navigieren Mercury Besuchen Sie die Homepage von Tours und รผberprรผfen Sie mit Firebug das orangefarbene Rechteck rechts neben dem gelben Feld โLinksโ. Siehe Abbildung unten.
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 IDE, geben Sie einen Schrรคgstrich โ/โ in das Target Fรผgen Sie dann den XPath ein, den wir im vorherigen Schritt kopiert haben. Der Eintrag in Ihrer Target Das Feld sollte jetzt mit zwei Schrรคgstrichen โ//โ beginnen.
Schritt 4) Klicken Sie auf die Schaltflรคche โSuchenโ. Selenium Die IDE sollte in der Lage sein, das orangefarbene Kรคstchen wie unten gezeigt hervorzuheben.
Zusammenfassung
Syntax fรผr die Verwendung des Locators
| Methodik | Target Syntax | Beispiel |
|---|---|---|
| Nach ID | id= id_of_the_element | id=E-Mail |
| Namentlich | name=name_of_the_element | name=Benutzername |
| Nach Namen mithilfe von Filtern | name=name_of_the_element filter=value_of_filter | name=tripType value=oneway |
| Nach Linktext | link=link_text | link=REGISTER |





























