Speichern Sie Variablen, Echo, Warnung und PopUp-Verwaltung in Selenium IDE

⚡ Intelligente Zusammenfassung

Befehle speichern in Selenium Die IDE speichert Laufzeitwerte in benannten Variablen, gibt sie mit dem Befehl „echo“ im Protokoll aus, und eine spezielle Befehlsfamilie kümmert sich um Warnmeldungen, Bestätigungsdialoge und das Umschalten zwischen mehreren Browserfenstern.

  • 🔘 Eine Variable erstellen: Der Befehl „store“ nimmt den Wert in Target und der Variablenname in Value.
  • ☑️ Lies es noch einmal: Setzen Sie den Namen in ${ }, wo immer ein Befehl ein Ziel oder einen Wert akzeptiert.
  • Zur Fehlersuche ausgeben: echo schreibt eine Zeichenkette oder eine Variable direkt in das IDE-Protokoll.
  • 🧪 Benachrichtigungen werden automatisch akzeptiert: Die IDE klickt automatisch auf OK, verwenden Sie daher storeAlert, um den Nachrichtentext zu erfassen.
  • Bestätigungen erfordern eine Entscheidung: Platzieren Sie chooseOkOnNextConfirmation vor dem Befehl, der den Dialog öffnet.
  • 📊 Fensterwechsel: selectWindow zielt auf einen Fenstertitel ab, und ein Null-Ziel gibt das übergeordnete Fenster zurück.

Variablen speichern, Echo-, Alarm- und Popup-Verarbeitung in Selenium IDE

In diesem Tutorial lernen Sie die Store-Befehle, den Echo-Befehl sowie die Behandlung von Warnmeldungen und Popups kennen. Selenium IDEZusammengenommen verwandeln diese Befehle ein feststehendes aufgezeichnetes Skript in ein Skript, das auf die Rückgabewerte der Anwendung zur Laufzeit reagiert.

⚠️ Hinweis zu den Versionen: Die folgenden Screenshots stammen aus dem Original. Firefox-Plugin Selenium Die IDE und die Befehle verwenden ihre CamelCase-Selenese-Namen. Das aktuelle Chrome, Firefox Die Edge-Erweiterung behält dasselbe Verhalten bei, schreibt aber die meisten Befehlsnamen mit Leerzeichen. Eine Karteping Die Tabelle befindet sich gegen Ende dieses Artikels, und alle Originalbefehle und Screenshots wurden wie veröffentlicht beibehalten.

Selenium IDE-Variablen

Shop

Zum Speichern von Variablen Selenium IDE, wir verwenden die Shop an Befehl. Die folgende Abbildung speichert den Wert „tutorial“ in einer Variablen namens „myVariable“.

Selenium IDE-Speicherbefehl mit dem Wert „tutorial“ in „myVariable“ gespeichert

Um auf die Variable zuzugreifen, schließen Sie sie einfach in das Symbol ${…} ein. Um beispielsweise den Wert von „myVariable“ in das Textfeld „userName“ einzugeben, Mercury Touren: Geben Sie ${myVariable} in das Feld „Wert“ ein.

Selenium IDE-Befehl mit ${myVariable} im Wertfeld des Textfelds „Benutzername“

Echo-Befehl in Selenium IDE

Eine gespeicherte Variable ist unsichtbar, bis sie ausgegeben wird, und genau das ist es, was die Echo Der Befehl tut dies. Er schreibt während der Wiedergabe eine Meldung in das IDE-Protokollfenster, wodurch er die schnellste Möglichkeit bietet, zu bestätigen, dass ein Speicherbefehl das Erwartete erfasst hat, bevor Sie darauf aufbauende Assertions erstellen.

Der Befehl akzeptiert beide Formen:

  • Eine Zeichenkette in Literalform. Füge den Text in die Target Feld, zum Beispiel Anmeldevorgang abgeschlossen, um einen Kontrollpunkt in einem langen Skript zu markieren.
  • Eine Variable. Setzen Sie ${myVariable} in die Target Anstelle des Namens wird das Feld und der gespeicherte Wert ausgegeben.

Zwei Gewohnheiten machen `echo` weitaus nützlicher, als es zunächst scheint. Gib eine Variable direkt nach dem `store`-Befehl aus, der sie erzeugt, damit ein Fehler sofort sichtbar wird. tracVerwenden Sie die Aufzeichnung anstelle der Bestätigung zwanzig Schritte später. Fügen Sie jeder Meldung den zugehörigen Schritt voran, da im Protokollfenster alle Befehle in einer flachen Liste angezeigt werden. Beachten Sie, dass `echo` nur ins Protokoll schreibt – es ändert niemals die Seite und führt niemals zu einem Fehlschlag bei einem Test. Daher kann es bedenkenlos dauerhaft in einem Skript belassen werden.

StoreElementPresent

Dieser Befehl speichert je nach Vorhandensein des angegebenen Elements entweder „true“ oder „false“. Das folgende Skript speichert den booleschen Wert „true“ in „var1“ und „false“ in „var2“. Zur Überprüfung verwenden wir den Befehl „echo“, um die Werte von var1 und var2 anzuzeigen. Die Basis URL für die untenstehende Abbildung wurde auf die Mercury Homepage von Tours.

Selenium Die IDE-Funktion `storeElementPresent` speichert `true` in `var1` und `false` in `var2`, was im Protokoll ausgegeben wird.

StoreText

Dieser Befehl speichert den Inhalt eines Elements in einer Variablen. Die folgende Abbildung speichert den Inhalt des h1-Tags auf der Facebook-Anmeldeseite in einer Variablen namens „textVar“.

Selenium Der IDE-Befehl storeText liest css=h1 in die Variable textVar ein.

Da es sich um das einzige Element dieser Art auf der Seite handelt, können wir bedenkenlos „css=h1“ als Ziel verwenden. Die Abbildung unten zeigt, dass… Selenium Die IDE konnte die Zeichenkette „Sign Up“ in der Variable „textVar“ speichern, da echo ihren Wert korrekt ausgegeben hat.

Selenium Im IDE-Protokollfenster wird „Anmelden“ als der in textVar gespeicherte Wert ausgegeben.

Warnungen, Popup und mehrere Windows

Benachrichtigungen sind wahrscheinlich die einfachste Form von Pop-up-Fenstern. Selenium Zur Behandlung von Warnungen werden die folgenden IDE-Befehle verwendet:

Warnmeldungen Verwendung

AssertAlert

affirmNotAlert

Ruft die Warnmeldung ab und vergleicht sie mit einem von Ihnen angegebenen Zeichenfolgenwert.

AssertAlertPresent

AssertAlertNotPresent

Gibt an, ob eine Warnung vorliegt oder nicht.
storeAlert Ruft die Warnmeldung ab und speichert sie in einer von Ihnen angegebenen Variable.
storeAlertPresent Gibt TRUE zurück, wenn eine Warnung vorliegt, andernfalls FALSE.

überprüfenAlert

verifyNotAlert

Ruft die Warnmeldung ab und überprüft, ob sie mit dem von Ihnen angegebenen Zeichenfolgenwert übereinstimmt.

verifyAlertPresent

verifyAlertNotPresent

prüft, ob eine Warnung vorliegt oder nicht.

Beachten Sie beim Arbeiten mit Warnungen diese beiden Dinge:

  • Selenium Die IDE klickt automatisch auf die Schaltfläche „OK“ im Warnfenster, sodass Sie die eigentliche Warnung nicht sehen können.
  • Selenium Die IDE kann keine Warnmeldungen verarbeiten, die innerhalb der onload()-Funktion der Seite ausgelöst werden. Sie verarbeitet nur Warnmeldungen, die generiert werden, nachdem die Seite vollständig geladen wurde.

In diesem Beispiel verwenden wir den Befehl storeAlert, um zu zeigen, dass obwohl Selenium Die IDE zeigte die eigentliche Warnmeldung nicht an, konnte die Nachricht aber dennoch abrufen.

Schritt 1) In Selenium IDE, Basis festlegen URL zu http://jsbin.com. Die vollständige URL ist http://jsbin.com/usidix. Diese jsbin-Codebeispiele stammen aus der Zeit von Firefox-plugin era und kann möglicherweise nicht mehr aufgelöst werden; jede Seite mit einer Schaltfläche, die eine Warnung auslöst, reproduziert das gleiche Ergebnis.

Schritt 2) Erstellen Sie das Skript wie unten gezeigt. Der Befehl „click“ zielt auf die Schaltfläche „Los!“ ab, „storeAlert“ erfasst die Nachricht in „alertMessage“ und „echo“ gibt sie aus.

Selenium IDE-Skript mit den Befehlen click, storeAlert und echo für die jsbin-Alert-Demoseite

Schritt 3) Führen Sie das Skript aus, erwarten Sie aber nicht, die eigentliche Warnmeldung zu sehen. Im untenstehenden Protokollbereich wird die erfasste Meldung angezeigt, obwohl der Dialog nie sichtbar war.

Selenium IDE-Protokoll mit dem von storeAlert nach der Wiedergabe abgerufenen Warntext.

Bestätigungen

Bestätigungen werden als Pop-ups mit den Schaltflächen „OK“ und „ABBRECHEN“ angezeigt, im Gegensatz zu Warnmeldungen, die nur die Schaltfläche „OK“ bieten. Die Befehle zur Bearbeitung von Bestätigungen entsprechen denen für Warnmeldungen.

  • assertConfirmation / assertNotConfirmation
  • assertConfirmationPresent / assertConfirmationNotPresent
  • StoreBestätigung
  • storeConfirmationPresent
  • Bestätigung überprüfen / Nicht-Bestätigung überprüfen
  • Bestätigung vorhanden / Bestätigung nicht vorhanden

Darüber hinaus sagen diese Befehle Selenium Welche Taste soll ich wählen, OK oder ABBRECHEN?

  • chooseOkOnNextConfirmation / chooseOkOnNextConfirmationAndWait
  • Wählen SieAbbrechenBeiNächsteBestätigung

Platzieren Sie diese Befehle bevor der Befehl, der das Bestätigungsfeld auslöst, sodass Selenium Die IDE weiß im Voraus, welche Option zu wählen ist. Auch hier gilt: Sie werden während der Skriptausführung kein Bestätigungsfenster sehen.

Lassen Sie uns eine Webseite mit einem Button testen, der so programmiert wurde, dass er meldet, ob der Benutzer OK oder ABBRECHEN gedrückt hat.

Schritt 1) In Selenium IDE, Basis festlegen URL zu http://jsbin.com. Die vollständige URL ist http://jsbin.com/enifaf.

Schritt 2) Erstellen Sie das Skript wie unten gezeigt. Dieses Mal drücken wir zuerst die OK-Taste.

Selenium Das IDE-Skript fügt chooseOkOnNextConfirmation vor dem Klick ein, der den Dialog öffnet.

Schritt 3) Führen Sie das Skript aus und stellen Sie fest, dass die eigentliche Bestätigung nicht angezeigt wird, die Webseite aber weiterhin meldet, welche Schaltfläche gedrückt wurde. Selenium IDE gedrückt.

Testseite meldet, dass die OK-Schaltfläche im Bestätigungsdialog gedrückt wurde.

Schritt 4) Ersetzen Sie den Befehl `chooseOkOnNextConfirmation` durch `chooseCancelOnNextConfirmation` und führen Sie das Skript erneut aus. Die Seite zeigt nun die gegenteilige Auswahl an.

Selenium Das IDE-Skript wurde so geändert, dass es chooseCancelOnNextConfirmation anstelle von chooseOkOnNextConfirmation verwendet.

Mehrere Windows

Wenn Sie auf einen Link klicken, der ein separates Fenster öffnet, müssen Sie zuerst anweisen Selenium In der IDE muss das Fenster ausgewählt werden, bevor auf die darin enthaltenen Elemente zugegriffen werden kann. In älteren IDEs wurde der Fenstertitel als Locator verwendet.

Mit dem Befehl selectWindow können wir zwischen Fenstern wechseln.

Wir verwenden den Link http://jsbin.com/ocinaj/1 mit dem Titel „First Window“. Der Hyperlink „hier“ auf dieser Seite öffnet Facebook in einem neuen Fenster. Anschließend geben wir folgende Anweisungen: Selenium IDE, um Folgendes zu tun:

  • Übertragen Sie die Steuerung vom übergeordneten Fenster auf das neu geöffnete Facebook-Fenster mithilfe des Befehls selectWindow und dem Fenstertitel als Locator.
  • Überprüfen Sie den Titel des neuen Fensters.
  • Wählen Sie das ursprüngliche Fenster erneut mit dem Befehl selectWindow und dem Ziel „null“ aus.
  • Überprüfen Sie den Titel des aktuell ausgewählten Fensters.

Der obige Plan lässt sich in die hier dargestellte vierstufige Abfolge übersetzen.

Diagramm des Wechsels vom übergeordneten Fenster zum neuen Fenster und zurück

Schritt 1) Die Basis festlegen URL zu http://jsbin.com.

Schritt 2) Erstellen Sie das Skript wie unten gezeigt.

Selenium IDE-Skript, das selectWindow, pause und verifyTitle verwendet, um zwischen zwei Fenstern zu wechseln

Wir benötigen den Pause-Befehl, um zu warten, bis das neu geöffnete Fenster geladen ist, bevor wir seinen Titel lesen können.

Schritt 3) Führen Sie das Skript aus. Beachten Sie, dass die Testfall bestanden, was bedeutet, dass wir erfolgreich zwischen den Fenstern wechseln und deren Titel überprüfen konnten.

Ergebnis „Grün bestanden“ Selenium IDE, nachdem beide Fenstertitel überprüft wurden

Denken Sie immer daran, dass durch die Einstellung des selectWindow-Ziels auf „null“ automatisch das übergeordnete Fenster ausgewählt wird – in diesem Fall das Fenster, in dem sich das Element „link=here“ befindet.

Hinweis: Facebook hat den Seitentitel seit der Erstellung dieses Tutorials geändert. Passen Sie den erwarteten Titel im Skript entsprechend an.

Modernes Selenium IDE-Entsprechungen dieser Befehle

Das FirefoxDas IDE-Plugin wurde eingestellt, als Firefox Umstellung auf die WebExtensions-Architektur und das aktuelle Chrome, Firefox Die Edge-Erweiterung hat die meisten Selenese-Befehle in eine durch Leerzeichen getrennte Form umbenannt. Das Verhalten bleibt unverändert, daher genügt die folgende Tabelle, um die oben genannten Skripte für eine aktuelle Installation zu lesen.

Legacy-Befehl in diesem Tutorial Aktuell Selenium IDE-Befehl
Shop an Shop an
Echo Echo
speichernText speichern
storeElementPresent speichern Sie das Element (oder stellen Sie sicher, dass das Element vorhanden ist)
assertAlert / verifyAlert Alarm bestätigen / Alarm überprüfen
chooseOKOnNextConfirmation Bei der nächsten Bestätigung bitte OK auswählen.
Wählen SieAbbrechenBeiNächsteBestätigung Bei der nächsten Bestätigung „Abbrechen“ auswählen
selectWindow (title as target) Fenster mit Handle=${handle} auswählen

Zwei Unterschiede sind hervorzuheben. Eingabeaufforderungen, die im alten Artikel nicht behandelt wurden, haben nun eigene Befehle: Beantworten Sie die nächste Frage. plant die Antwort, bevor der Dialog erscheint, und Webdriver antwortet auf sichtbare Eingabeaufforderung Die Eingabe erfolgt in eine bereits geöffnete Eingabeaufforderung. Und das Umschalten zwischen Fenstern ist nicht mehr vom Seitentitel abhängig. Ausführen Fenstergriff Zuerst einen Handle erfassen, dann weitergeben handle=${yourHandle} um das Fenster auszuwählen. Diese Änderung behebt den oben beschriebenen Fehler, bei dem eine Website einfach ihre Seite umbenennt und das Skript das Fenster nicht mehr findet. Die offizielle Selenium IDE-Projektseite listet den vollständigen aktuellen Befehlssatz auf.

Häufig gestellte Fragen

Ja. ${myVariable} und ${myvariable} verweisen auf zwei verschiedene Variablen. Der Zugriff auf eine Variable, die nie gespeichert wurde, führt zu einem leeren String anstatt zu einem Fehler. Verwenden Sie innerhalb einer Suite eine einheitliche Namenskonvention, um stillschweigende Leerzeichen zu vermeiden.

Ja. Die ${ } Syntax wird in jedem Fall expandiert. Target oder Wertfeld, sodass es innerhalb eines offenen Befehls, eines XPath-Ausdrucks oder eines CSS-Selektors funktioniert. Auf diese Weise wird ein aufgezeichnetes Skript in ein Skript umgewandelt, das durch zuvor während der Ausführung erfasste Daten gesteuert wird.

Selenese kennt keine mathematischen Operatoren. Verwenden Sie den Befehl `execute script` mit einem kleinen Wert. JavaEin Skriptausdruck liest die Variable, gibt das Ergebnis zurück und speichert diesen Rückgabewert. Beachten Sie, dass jeder gespeicherte Wert als Zeichenkette vorliegt; konvertieren Sie ihn daher vorher.

Behandeln Sie sie als lokal für einen einzelnen Test. Wenn Sie sich auf einen Wert verlassen, der von einem vorherigen Test festgelegt wurde, wird die Testsuite von der Reihenfolge abhängig und schwer zu debuggen. Speichern Sie daher die benötigten Daten innerhalb des jeweiligen Tests oder lesen Sie sie zu Beginn aus einer Datendatei.

Eine Eingabeaufforderung benötigt Text, nicht nur eine Schaltfläche. Führen Sie die Antwort bei der nächsten Eingabeaufforderung aus, indem Sie die Antwort im Feld „Wert“ vor dem Befehl eingeben, der die Eingabeaufforderung öffnet. Alternativ können Sie die Webdriver-Antwortfunktion für die sichtbare Eingabeaufforderung verwenden, wenn der Dialog bereits angezeigt wird.

Maschinelles Lernen kann anhand einer einfachen Szenariobeschreibung eine Befehlsfolge vorschlagen und robustere Locatoren liefern als ein Recorder. Auch die KI-gestützte Locator-Reparatur ist hilfreich, da ein umbenanntes Element häufig der Grund dafür ist, dass ein gespeicherter Wert leer zurückgegeben wird.

Ja. Exportieren Sie den Test nach Java or PythonLassen Sie Copilot anschließend die flache Befehlsliste in Seitenobjekte und wiederverwendbare Wartezeiten umstrukturieren. Überprüfen Sie die Alarmbehandlung manuell, da generierter Code häufig von einem sichtbaren Dialog ausgeht, den die IDE bereits geschlossen hat.

Die Auswahl anhand des Titels ist nicht eindeutig und es kann passieren, dass das falsche Fenster ausgewählt wird. Genau deshalb bevorzugt die aktuelle IDE Handles: Speichern Sie den Fensterhandle direkt nach dem Öffnen und wechseln Sie dann mit handle=${yourHandle} zum Fenster.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: