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.) es muss operate weiter. Die Identifizierung korrekter GUI-Elemente ist eine Voraussetzung für die Erstellung eines Automatisierungsskripts. Die genaue Identifizierung von GUI-Elementen ist jedoch schwieriger als es sich anhört. Manchmal kommt es vor, dass Sie mit falschen GUI-Elementen oder gar keinen Elementen arbeiten! Somit, 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 toggle zwischen Facebook, neue Tours.demoaut auf der Grundlage von Locators, die diese Anwendungen unterstützen. Wiewise in Ihrem Testen 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.

Zielformat: id=id des Elements

In diesem Beispiel verwenden wir Facebook als Test-App, da Mercury Tours keine ID-Attribute verwendet.

Schritt 1) Seit der Erstellung dieses Tutorials hat Facebook das Design seiner Anmeldeseite geändert. Nutzen Sie diese Demoseite http://demo.guru99.com/test/facebook.html zum Prüfen. Untersuchen Sie die „Email oder Telefon“-Text box Verwenden Sie Firebug und notieren Sie sich die ID. In diesem Fall lautet die ID „email"

Lokalisierung anhand der ID

Schritt 2) Einführung Selenium IDE und geben Sie „id=e“ einmail” im Ziel box. Klicken Sie auf die Schaltfläche „Suchen“ und beachten Sie, dass „Email oder Telefon“-Text box wird gelb hervorgehoben und grün umrandet, 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.

Zielformat: name=Name des Elements

Im Folgendenwing Zur Demonstration verwenden wir nun Mercury Tours, da alle wichtigen Elemente Namen haben.

Schritt 1) Navigieren http://demo.guru99.com/test/newtours/ und verwenden Sie Firebug, um den Text „Benutzername“ zu überprüfen box. 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 Ziel ein box und klicken Sie auf die Schaltfläche „Suchen“. Selenium IDE sollte in der Lage sein, den Benutzernamentext zu finden box durch Hervorheben.

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.

Zielformat: name=name_of_the_element filter=value_of_filter

Sehen wir uns ein Beispiel an -

Schritt 1) Melden Sie sich bei Mercury Tours an.

Melden Sie sich bei Mercury Tours mit „tutorial“ als Benutzernamen und Passwort an. Sie sollten zur unten gezeigten Flight Finder-Seite gelangen.

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 Kommando box of Selenium IDE, geben Sie den Befehl „click“ ein.
  • Im Ziel boxGeben Sie „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.

Zielformat: link=link_text

In diesem Beispiel greifen wir auf den Link „REGISTER“ auf der Mercury Tours-Homepage zu.

Schritt 1)

  • Stellen Sie zunächst sicher, dass Sie von Mercury Tours abgemeldet sind.
  • Gehen Sie zur Homepage von Mercury 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 Das Ziel der IDE box. 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 den Befehl ein box und ausführen. 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)

Der Cavalon Sentinel ist das AutoGyro-Premiummodell mit nebeneinander angeordneten Sitzen, verfügbar mit dem neuen hochmodernen und kraftstoffsparenden Rotax XNUMX iS-Motor. Dokumentobjektmodell (DOM)Vereinfacht ausgedrückt ist dies die Art und Weise, wie HTML-Elemente strukturiert sind. Selenium Die IDE kann das DOM für den Zugriff auf Seitenelemente verwenden. Wenn wir diese Methode verwenden, ist unser Ziel box beginnt immer mit „dom=document…“; Das Präfix „dom=“ wird jedoch normalerweise entfernt, weil 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 http://demo.guru99.com/test/facebook.html Navigieren Sie dorthin und überprüfen Sie mit Firebug die Option „Angemeldet bleiben“. box. Notieren Sie sich die ID.

Lokalisieren nach DOM – getElementById

Wir können sehen, dass die ID, die wir verwenden sollten, „persist_“ ist.box".

Schritt 2) Offen Selenium IDE und im Target box, geben Sie „document.getElementById(“persist_box„)“ und klicken Sie auf „Suchen“. Selenium IDE sollte in der Lage sein, die Option „Angemeldet bleiben“ zu finden box. Allerdings kann es das Innere des Schecks nicht hervorheben box, 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 das Quadrat eingeben brackets in der Syntax von getElementsByName unten.

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 zur Homepage von Mercury Tours und melden Sie sich mit „tutorial“ als Benutzernamen 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 in 1, sodass Ihr Ziel nun zu document.getElementsByName(“servClass”)[1] wird. 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 Sie zur Homepage von Mercury Tours http://demo.guru99.com/test/newtours/ und verwenden Sie Firebug, um den Benutzernamentext zu überprüfen box. Beachten Sie, dass es in einer Form namens „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 werden auf den Text „Telefon“ zugreifen box finden Sie auf der Registrierungsseite von Mercury Tours. Das Formular auf dieser Seite hat kein Namens- und ID-Attribut, daher ist dies ein gutes Beispiel.

Schritt 1) Navigieren Sie zur Registrierungsseite von Mercury Tours und sehen Sie sich den Telefontext an box. Beachten Sie, dass das Formular, das es enthält, keine ID- und Namensattribute hat.

Lokalisieren nach DOM – dom:index

Schritt 2) Geben Sie „document.forms[0].elements[3]“ ein Selenium Das Ziel der IDE box und klicken Sie auf die Schaltfläche „Suchen“. Selenium IDE sollte auf den Telefontext zugreifen können box korrekt.

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 Das Ziel der IDE box. Der Telefontext box sollte weiterhin hervorgehoben werden.

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 Ortungsgeräte. Im Folgendenwing Beispielsweise greifen wir auf ein Bild zu, auf das mit den zuvor besprochenen Methoden unmöglich zugegriffen werden kann.

Schritt 1) Navigieren Sie zur Mercury Tours-Homepage und überprüfen Sie mit Firebug das orangefarbene Rechteck rechts neben den gelben „Links“. box. Siehe das Bild 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 IDEGeben Sie einen Schrägstrich „/“ in das Ziel ein box Fügen Sie dann den XPath ein, den wir im vorherigen Schritt kopiert haben. Der Eintrag in Ihrem Target box sollte nun mit zwei Schrägstrichen „//“ beginnen.

Lokalisieren mit XPath

Schritt 4) Klicken Sie auf die Schaltfläche „Suchen“. Selenium IDE sollte in der Lage sein, das Orange hervorzuheben box wie unten gezeigt.

Lokalisieren mit XPath

Zusammenfassung

Syntax für die Verwendung des Locators

Versandart Zielsyntax Beispiel
Nach ID id= id_of_the_element id=email
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