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โ€œ.

Lokalisierung anhand der ID

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.

Lokalisierung anhand der ID

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.

Nach Namen suchen

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.

Nach Namen suchen

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.

Suchen Sie mithilfe von Filtern nach Elementnamen

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.

Suchen Sie mithilfe von Filtern nach Elementnamen

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.

Suchen Sie mithilfe von Filtern nach Elementnamen

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.

Suchen Sie mithilfe von Filtern nach Elementnamen

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.

Suchen Sie mithilfe von Filtern nach Elementnamen

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.

Suchen nach Linktext

Schritt 3) Kopieren Sie den Linktext in Firebug und fรผgen Sie ihn ein Selenium IDEs Target Feld. Stellen Sie ihm โ€žlink=โ€œ voran.

Suchen nach Linktext

Schritt 4) Klicken Sie auf die Schaltflรคche โ€žSuchenโ€œ und beachten Sie das Selenium IDE konnte den REGISTER-Link korrekt hervorheben.

Suchen nach Linktext

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 Linktext

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.

Lokalisieren nach DOM โ€“ getElementById

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 โ€“ getElementById

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.

Lokalisieren nach DOM โ€“ getElementsByName

getElementById

  • Es wird nur ein Element fรผr Sie erhalten.
  • Dieses Element trรคgt die ID, die Sie in den Klammern von getElementById() angegeben haben.

Lokalisieren nach DOM โ€“ getElementsByName

getElementsByName

  • Es wird eine Sammlung von Elementen erhalten, deren Namen alle gleich sind.
  • Jedes Element ist mit einer Zahl beginnend bei 0 indiziert, genau wie ein Array
  • Sie geben an, auf welches Element Sie zugreifen mรถchten, indem Sie dessen Indexnummer in die eckigen Klammern in der folgenden Syntax von getElementsByName einfรผgen.

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โ€œ.

Lokalisieren nach DOM โ€“ getElementsByName

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.

Lokalisieren nach DOM โ€“ getElementsByName

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 โ€“ getElementsByName

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.

Lokalisieren nach DOM โ€“ dom:name

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:name

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.

Lokalisieren nach DOM โ€“ dom:index

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.

Lokalisieren nach DOM โ€“ dom:index

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 nach DOM โ€“ dom:index

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.

Lokalisieren mit XPath

Schritt 2) Klicken Sie mit der rechten Maustaste auf den HTML-Code des Elements und wรคhlen Sie dann die Option โ€žXPath kopierenโ€œ.

Lokalisieren mit XPath

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.

Lokalisieren mit XPath

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.

Lokalisieren mit XPath

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

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: