So schreiben Sie einen guten Test
msg.ZenTestAI wandelt Beschreibungen in natürlicher Sprache in ausführbare Testschritte um. Die Qualität eines Tests hängt daher maßgeblich von der Qualität der von Ihnen verfassten Prompts ab. Halten Sie diese klar, prägnant und konzentrieren Sie sich auf eine unterstützte Aktion pro Schritt.
Wenn der Runner Ihren Test ausführt, ordnet ein KI-Klassifikator jede Schrittbeschreibung einer der unterstützten Aktionen zu. Je besser Ihr Prompt auf eine Aktion abgestimmt ist – und je klarer Ihre Beschreibung des Zielelements ist –, desto zuverlässiger wird der Schritt ausgeführt.
Schreiben Sie Testfälle so, dass eine Person, die die Applikation noch nie gesehen hat, ihnen Schritt für Schritt folgen könnte. Je näher Ihr Prompt an einer "Klick-für-Klick"-Anleitung ist, desto einfacher ist er für den KI-Agenten zu verstehen und auszuführen.
Richtlinien
Sie erzielen die besten Ergebnisse, wenn Sie diese Richtlinien befolgen:
- Denken Sie in Begriffen des DOM, nicht des Screenshots. Aktionen werden auf dem technischen DOM-Baum (Elemente, Labels, Attribute) ausgeführt, nicht auf Pixeln. Die Seite sollte für die Automatisierung einigermaßen zugänglich sein – mindestens durch Labels, Rollen, IDs oder stabile Klassennamen. Reine Bild-UIs (Canvas, benutzerdefinierte Renderings) sind schwer zu steuern.
- Richten Sie Prompts an den unterstützten Aktionen aus. Jede Aktion wird genau einer der unterstützten Aktionen zugeordnet. Sie können mehrere in einem Schritt kombinieren (z. B. "Klicke auf 'Übernehmen' und erwarte dann, dass der Zähler aktualisiert wird"), der Klassifikator teilt sie automatisch in separate Ausführungsschritte auf. Es ist dennoch eine gute Angewohnheit, einen Schritt auf eine einzelne Aktion zu fokussieren: Dies macht die Klassifizierung vorhersehbarer und die Explain-Ausgabe leichter lesbar.
- Vermeiden Sie mehrdeutige Verben. "Wert 'test' auswählen" kann Klicken, Auswählen aus einem Dropdown oder Hervorheben von Text bedeuten. Seien Sie spezifisch: "Klicke auf das Menüelement …", "Wähle aus dem Dropdown …".
- Verwenden Sie Anführungszeichen um wichtige Werte.
Gib "John Doe" in das Textfeld mit dem Label "Name" einist viel einfacher zu parsen als die Version ohne Anführungszeichen. - Merken Sie sich frühere Werte, anstatt sie im Kopf zu vergleichen. Jeder Schritt läuft isoliert ab, daher können Prompts wie "Ich erwarte, dass sich etwas ändert" oder "der Wert sollte niedriger sein als zuvor" nicht ausgewertet werden – der Agent hat kein Gedächtnis an den vorherigen Zustand. Erfassen Sie den früheren Wert mit einem Speichern-Schritt und validieren Sie ihn gegen diesen konkreten
[[Parameter]]. - Greifen Sie auf zuvor erstellte Objekte über einen gemerkten Parameter zu. Wenn der Test etwas erstellt (eine Bestellung, einen Kunden, …) und ein späterer Teil genau dieses Objekt wieder öffnen muss, speichern Sie den identifizierenden Wert direkt nach dem Erstellen –
Remember the order number shown on the confirmation page in [[orderNo]]– und greifen Sie explizit über diesen Parameter zu:Navigate to "https://app.example.com/orders/[[orderNo]]"oderClick the row containing "[[orderNo]]". Wenn unklar ist, wo der Wert nach dem Erstellen sichtbar ist (URL, Bestätigungsmeldung, eine Tabellenspalte), fragen Sie nach, statt zu raten. Formulierungen wie "öffne die neueste Bestellung" hängen von Sortierung und Timing ab – absolut letzter Ausweg. Siehe Parameter. - Entfernen Sie keine
[[Parameter]]-Platzhalter oder${…}-Template-Ausdrücke. Beide werden vom Klassifikator erkannt und zur Ausführungszeit aufgelöst. Siehe Parameter, Makros und Dynamische Berechnungen.
Jeder Schritt verfügt über eine Explain-Aktion (im Kontextmenü). Sie zeigt genau an, wie der KI-Agent den Schritt verstanden hat – welche Aktion er gewählt hat, mit welchem Element er interagieren möchte und welchen Wert er verwenden wird. Verwenden Sie diese Funktion, wenn ein Schritt nicht wie gewünscht funktioniert, bevor Sie den Prompt ändern.
Aktionen
Der Runner unterstützt die folgenden Aktionen; jeder Schritt wird genau einer davon zugeordnet.
| Aktion | Beschreibung |
|---|---|
| Klicken | Einfach-, Doppel-, Rechts-, Zurück- oder Vorwärtsklick auf ein Element. |
| Checkboxen / Radios / Schalter | Eine Checkbox, einen Radio-Button oder einen Schalter auf einen Zustand setzen oder umschalten (intern ein Klick). |
| Eingabe | Text in ein Textfeld eingeben; löschen, ersetzen oder anhängen; Datum in einem Datumswähler auswählen. |
| Erwarten | Behauptungen über die Seite, URL, Tabs, Downloads oder einen Parameterwert aufstellen. |
| Auswählen aus einem Dropdown | Einen oder mehrere Werte aus einem Dropdown / einer Combobox auswählen. |
| Darüberfahren (Hover) | Die Maus über ein Element bewegen (z. B. um einen Tooltip anzuzeigen). |
| Fokussieren | Den Tastaturfokus auf ein Element verschieben. |
| Scrollen | Zu einem Element, an die Seitenränder, um eine Anzahl von Pixeln oder innerhalb eines Containers scrollen. |
| Drag & Drop | Ein Quell-Element ziehen und auf einem Ziel-Element ablegen. |
| Slider / Bereich | Einen Slider auf einen bestimmten Wert bewegen; Bereichs-Slider werden als zwei separate Schritte gesetzt. |
| Datei-Upload | Eine oder mehrere Dateien (oder einen als .zip gepackten Ordner) in ein Datei-Input-Element hochladen. |
| Tastenkombination | Eine Taste oder Tastenkombination drücken (z. B. Strg+S). |
| Warten | Für eine feste Zeit oder bis eine Bedingung erfüllt ist warten. |
| Browser-Tab wechseln | Zu einem Browser-Tab wechseln, einen erstellen oder schließen. |
| URL ändern / Navigation | Zu einer URL navigieren, Pfad/Hash ändern, vor/zurück gehen, neu laden oder eine zuvor heruntergeladene Datei öffnen. |
| Bedingung | Schritte basierend auf einer einzelnen Bedingung ausführen. |
| Bedingungsgruppe | Einen von mehreren sich gegenseitig ausschließenden Zweigen ausführen (if / else-if / else). |
| Schleife / Wiederholung | Schritte eine feste Anzahl von Malen oder bis eine Bedingung erfüllt ist wiederholen. |
| Parameterwert speichern | Einen Wert von der Seite lesen und für spätere Schritte in einem Parameter speichern. |
| Zu Transaktion gehen (nur SAP) | Eine SAP Web GUI Transaktion über ihren Code öffnen (z. B. SE11). |
Klicken
Verwenden Sie diese Aktion, um auf ein beliebiges Element auf der Seite zu klicken.
Der KI-Agent wird:
- Entscheiden, wie geklickt wird. Unterstützte Varianten: Einfachklick (Standard), Doppelklick, Dreifachklick, Rechtsklick, Mittelklick, Zurück-Klick und Vorwärts-Klick. Erwähnen Sie die Variante in Ihrem Prompt, wenn Sie etwas anderes als einen einfachen Klick benötigen.
- Das Element anhand Ihrer Beschreibung finden und darauf klicken.
Standardmäßig schlägt der Schritt fehl, wenn das Element nicht anklickbar ist (deaktiviert, nicht sichtbar, hinter einem Modal). Sie können dies pro Seite in den Applikationseinstellungen ändern, damit der Agent nicht anklickbare Elemente ignoriert, anstatt den Test abzubrechen.
Ein Klick in ein Textfeld platziert den Cursor am Ende des bestehenden Textes. Das Auswählen von Text innerhalb eines Feldes wird nicht unterstützt.
Einige Browser-Elemente können nicht durch Klicken gesteuert werden:
- Native Browser-Prompts (Datei-öffnen-Dialoge, JS-Prompts, …). Der einzige unterstützte Fall ist das Hochladen über Datei-Upload.
- Browser-interne Kontextmenüs bei Rechtsklick.
Für native HTML <select>-Dropdowns sollten Sie Auswählen aus einem Dropdown bevorzugen – das ist der vorgesehene, zuverlässige Weg. Ein Klick, der direkt auf eine <option> trifft, übernimmt den Wert dennoch über einen Native-Select-Fallback, ist also nicht grundsätzlich unmöglich, sondern nur weniger zuverlässig.
Beispiele:
Klicke auf den "Speichern"-ButtonDoppelklick auf den "Speichern"-ButtonKlicke auf das Textfeld mit dem Label "Name" innerhalb des Bereichs "Allgemein"
Checkboxen / Radios / Schalter
Checkboxen, Radio-Buttons und Schalter werden intern über einen Klick gesteuert – das verwendete Verb entscheidet jedoch, wie der Agent klickt.
Auf einen bestimmten Zustand setzen — aktivieren, deaktivieren, einschalten, ausschalten, ankreuzen, abwählen, anhaken, abhaken. Der Agent prüft zuerst den aktuellen Zustand und klickt nur, wenn eine Änderung erforderlich ist. So endet das Element immer in dem gewünschten Zustand, unabhängig vom Ausgangszustand. Das ist idempotent – ein erneuter Lauf des Schritts ist ein gefahrloser No-op.
Aktiviere die Checkbox mit dem Label "Männlich"Deaktiviere den Schalter mit dem Label "Dark Mode"Aktiviere den Radio-Button "Alter 10-15"
Aktuellen Zustand umschalten — umschalten. Der Agent klickt einmal, um das Element zu invertieren. Es gibt kein festes Ziel und der Zustand ändert sich immer, das Ergebnis hängt also vom Ausgangszustand ab. Bevorzugen Sie die expliziten Verben oben, wenn Sie einen garantierten Endzustand benötigen.
Schalte den Schalter "Benachrichtigungen" um
Bei einem normalen Schalter liefert jedes der obigen Verben ein korrektes Ergebnis. Der Unterschied wird relevant, wenn der Ausgangszustand unbekannt ist oder der Schritt mehrfach ausgeführt werden kann: aktivieren / deaktivieren sind zustandsbewusst und idempotent, während umschalten einfach umschaltet.
Eingabe
Verwenden Sie diese Aktion, um Text in ein Input- oder Textarea-Feld zu tippen. Der Schritt schlägt fehl, wenn das Zielelement nicht beschreibbar ist.
Ein Eingabe-Prompt muss mindestens den einzugebenden Wert und das Zielelement enthalten.
Standardmäßig wird der vorhandene Text vor der Eingabe gelöscht und die Eingabe wird nicht bestätigt – die Eingabetaste (Enter) wird nicht gedrückt, der Fokus wird danach lediglich entfernt. Sie können die Standardeinstellungen in Ihrem Prompt überschreiben:
Lösche das Feld vor der Eingabe(oder behalte den Text bei)… und drücke Enter, um den Wert zu bestätigenErsetze "John" im Eingabefeld mit dem Label "Name" durch "Jane"– um einen Teiltext zu ersetzenLeere das Textfeld mit dem Label "Name"– indem der Wert auf leer gesetzt wird
Sie können diese Standardeinstellungen pro Seite in den Applikationseinstellungen ändern.
Eine gute Voreinstellung für bestätigen mit Enter hängt stark von der Applikation ab – viele Apps erwarten nach der Eingabe implizit ein Enter. Konfigurieren Sie dies einmal pro Seite in den Applikationseinstellungen, anstatt bei jedem Schritt "und drücke Enter" hinzuzufügen.
Das Tippen und anschließende Drücken von Enter über einen separaten Tastenkombinations-Schritt ist unnötig und wird nicht empfohlen. Die Eingabe-Aktion handhabt das Bestätigen mit Enter nativ, wenn Sie es im selben Schritt erwähnen.
Beispiele:
Gib "John Doe" in das Textfeld mit dem Label "Name" einGib "John Doe" in das Textfeld mit dem Label "Name" ein und drücke EnterErsetze den Text "John" im Eingabefeld mit dem Label "Name" durch "Jane"Leere das Textfeld mit dem Label "Name"Gib "John Doe" in das Textfeld mit dem Label "Name" ein, ohne das Feld zu leeren
Alle Element-Aktionen berücksichtigen den vollständigen DOM-Baum, einschließlich Elementen außerhalb des aktuellen Viewports. Abhängig von der Einstellung pro Seite scrollt der Agent das Zielelement automatisch in den Sichtbereich.
Datumswähler
Für Datums- und Zeitfelder sollten Sie Eingabe gegenüber Klicken bevorzugen. Die Eingabe-Aktion versteht gängige Datumsformate und schaltet automatisch in den Datumswähler-Modus, wenn dies effizienter ist als Zeichen-für-Zeichen zu tippen.
Gib "01.01.2010" in den Datumswähler mit dem Label "Geburtsdatum" einWähle "01.01.2010" im Datumswähler für das Feld "Geburtsdatum" aus← wird weiterhin als Eingabe klassifiziert
Erwarten
Verwenden Sie die Erwarten-Aktion für alle Validierungen (Assertions). Der Agent verwendet generative KI, um Ihre Behauptung anhand eines Screenshots (oder der URL / des Tabs / der Downloads / des Parameterkontexts) zu bewerten. Rein technische Behauptungen (HTML-Attribute, CSS-Klassen, rohe DOM-Bäume) werden nicht unterstützt – msg.ZenTestAI führt Black-Box-Tests durch.
Sie können Behauptungen aufstellen über:
- Visuelles – alles, was auf einem Screenshot sichtbar ist (Sichtbarkeit, Farben, Layout, Vorhandensein von Text/Icons, Zeilenanzahl in Tabellen, …).
- URL / Browser-Tabs – aktuelle URL, Seitentitel, Anzahl der offenen Tabs, Tab-URLs.
- Downloads – Anzahl der heruntergeladenen Dateien, Dateinamen.
- Statische Fakten – alles, was sich aus Parameterwerten ableiten lässt, ohne die Seite zu untersuchen.
Fokussieren Sie den Agenten auf einen Unterbereich, indem Sie das übergeordnete Element erwähnen (z. B. "in der Tabelle", "im Bereich Allgemein").
Der Klassifikator schreibt jede Erwarten-Aktion so um, dass sie mit "Ich erwarte, dass …" beginnt. Phrasen wie "Ich kann X nicht sehen" werden zu "Ich erwarte, dass X nicht sichtbar ist" – machen Sie sich keine Sorgen um die eigene Invertierung.
Kombinieren Sie Behauptungen über dasselbe Ziel in einem Schritt, teilen Sie aber Behauptungen über verschiedene Ziele in separate Schritte auf:
- ✅ Ein Schritt: "Ich erwarte, dass der Button rot und aktiviert ist" (ein Ziel – der Button).
- ✅ Ein Schritt: "Ich erwarte, dass das Menü die Einträge Speichern und Abbrechen enthält" (ein Ziel – das Menü).
- ❌ Ein Schritt: "Der Button ist rot und die Tabelle hat 10 Zeilen" – in zwei Schritte aufteilen.
Beispiele:
Erwarte, dass der Text "Hallo Welt" sichtbar istErwarte, dass das Nummernschild des Autos den Text "MUC-123" enthältErwarte, dass die URL der Seite "https://www.msg-systems.com" istErwarte, dass die Seite eine Tabelle mit 5 Zeilen enthältErwarte, dass der Bereich "Allgemein" ein Textfeld mit dem Label "Name" enthält
Scrollen und Validierungen interagieren subtil. Validierungen basieren auf einem Screenshot, daher müssen Sie normalerweise nicht zuerst scrollen – der Agent erledigt das Richtige:
- Übergeordnetes Element angegeben (z. B. eine Tabelle): Ein vollständiger Screenshot nur dieses Elements wird aufgenommen.
- Einzelnes Element angegeben: Der Agent scrollt zu ihm und erstellt einen Screenshot der Seite.
- Nichts angegeben: Der Agent erstellt einen Screenshot der gesamten Seite bis zu ca. 3000×3000 px (möglicherweise über den Viewport hinaus).
Auswählen aus einem Dropdown
Verwenden Sie diese Aktion, um einen oder mehrere Werte aus einem Dropdown / einer Combobox auszuwählen.
Der Prompt muss mindestens den/die auszuwählenden Wert(e) und das Dropdown enthalten.
Der Klassifikator benötigt einen expliziten Hinweis darauf, dass es sich um ein Dropdown handelt – Wörter wie Dropdown, Combobox, Auswahlfeld lösen dies aus. Ein bloßes "Wähle 'grün' für Farbe" ist mehrdeutig und wird eher als Klicken klassifiziert.
Bevorzugen Sie diese Aktion gegenüber Klicken für native HTML <select>-Elemente – das ist der vorgesehene, zuverlässige Weg. Ein Klick, der direkt auf eine <option> trifft, übernimmt den Wert zwar über einen Native-Select-Fallback, ist aber weniger zuverlässig als die dedizierte Aktion; greifen Sie daher zuerst zur Dropdown-Formulierung (und den expliziten Hinweiswörtern oben).
Sie können 1…n Werte auswählen; bei Multi-Comboboxen triggert der Agent jeden Wert als Umschalter (er unterscheidet nicht zwischen Auswählen und Abwählen – das Ergebnis hängt vom vorherigen Status ab). Kombinieren Sie mehrere Auswahlen aus derselben Combobox in einem Schritt.
Bei Multi-Comboboxen klickt der Agent am Ende einmal auf die Combobox, um sie zu schließen. Bei regulären Dropdowns wird davon ausgegangen, dass sich das Dropdown von selbst schließt – falls Ihres das nicht tut, lassen Sie ein Klicken folgen, um es zu schließen.
Beispiele:
Wähle "Deutschland" aus dem Dropdown mit dem Label "Land" ausWähle "Deutschland" und "Frankreich" aus dem Dropdown mit dem Label "Land" aus
Darüberfahren (Hover)
Bewegen Sie die Maus über ein Element (z. B. um einen Tooltip anzuzeigen) und halten Sie sie dort.
Beispiele:
Fahre mit der Maus über den "Speichern"-ButtonFahre mit der Maus über das Textfeld mit dem Label "Name"
Fokussieren
Verschieben Sie den Tastaturfokus auf ein Element. Das Element muss fokussierbar sein.
Beispiele:
Fokussiere den "Speichern"-ButtonFokussiere das Textfeld mit dem Label "Name"
Scrollen
Scrollen unterstützt mehrere Modi:
- Scrollen zu einem Element –
Scrolle zu dem Element mit dem Label "Footer". - Scrollen an den Anfang / Ende der Seite –
Scrolle an das Ende der Seite. - Scrollen um eine feste Anzahl von Pixeln –
Scrolle die Seite um 500 Pixel nach unten. - Scrollen relativ zu einem Element –
Scrolle um 500 Pixel nach unten relativ zum Element mit dem Label "Footer". - Scrollen innerhalb eines Containers –
Scrolle zur rechten Seite des Menüs mit dem Label "Navigation" um 500 Pixel.
Pixelbasiertes Scrollen und Scrollen an den Anfang/Ende funktionieren nur, wenn die gesamte Seite scrollbar ist (Browser-Scrollleiste auf der Seite selbst). Scrollen innerhalb eines Bereichs erfordert die Benennung des übergeordneten Elements.
Drag & Drop
Ziehen Sie ein Quell-Element und legen Sie es auf einem Ziel-Element ab. Beide müssen im selben Schritt benannt werden.
Drag & Drop unterstützt keine pixelbasierten Offsets (aus Designgründen – sie werden instabil, wenn sich das Layout ändert) oder das Ziehen zwischen verschiedenen Browser-Tabs. Beschreiben Sie immer ein Zielelement, keine Position.
Beispiele:
Ziehe das Element mit dem Label "Zeile 1" auf das Element mit dem Label "Tabelle 2"Ziehe das Element mit dem Label "Zeile 1" auf das Element mit dem Label "Tabelle 2" und lege es am Ende der Tabelle ab
Slider / Bereich
Bewegen Sie einen Slider (Bereichseingabe) auf einen bestimmten Wert. Der Prompt muss den Slider-Verweis (z. B. "der Slider im Bereich X mit dem Label Y") und den Zielwert enthalten.
Der Schritt schlägt fehl, wenn der Wert nicht erreicht werden kann (Min/Max-Grenzen, Schritt-Einschränkungen, …).
Bereichs-Slider mit zwei Griffen werden als zwei separate Schritte gesetzt, einer pro Griff.
Beispiele:
Setze den Slider im Bereich "test", mit dem Label "hallo" auf 50Setze den unteren Griff des Bereichs-Sliders im Bereich "test", mit dem Label "hallo" auf 50. Setze den oberen Griff auf 100.(als zwei Schritte)
Es werden nur Slider unterstützt, die auf dem standardmäßigen, barrierefreien HTML-Muster basieren. Bei nicht-standardmäßigen Implementierungen greifen Sie auf einfaches Drag & Drop zurück.
Datei-Upload
Laden Sie eine oder mehrere Dateien (oder einen als .zip gepackten Ordner) in ein Datei-Input-Element hoch.
Der Prompt muss die hochzuladende(n) Datei(en) oder den Ordner (nach Name oder Beschreibung) und das Ziel-Datei-Input-Element enthalten.
Die Datei(en) müssen zuerst über Dateien (Upload / Download) in den erweiterten Einstellungen des Schritts an den Schritt angehängt werden und im Mandanten unter Zusatzfunktionen → Datei-Upload verfügbar sein. Maximale Dateigröße: 10 MB pro Datei.
- Weisen Sie dem Schritt eine Datei zu, und der Agent verwendet sie, unabhängig davon, wie Sie sie beschreiben.
- Weisen Sie mehrere Dateien zu, und ein dedizierter Agent gleicht Ihre Beschreibung (oder Liste von Namen) mit der/den richtigen Datei(en) ab.
- Um einen ganzen Ordner hochzuladen, packen Sie ihn als
.zip– der Runner entpackt ihn beim Hochladen.
Beispiele:
Lade die Datei "test.txt" in das Datei-Upload-Element mit dem Label "Upload" hochLade die Dateien "image1.png" und "image2.png" in den Galerie-Upload hoch
Erwähnen Sie "Upload" nur, wenn Sie ein tatsächliches Datei-Input-Element auf der Seite sehen (normalerweise identifizierbar durch einen Durchsuchen-Button). Manche Applikationen verstecken das Datei-Input hinter einer benutzerdefinierten UI; verwenden Sie dann Klicken auf den sichtbaren Auslöser und weisen Sie die Datei diesem Schritt zu. Sie können nicht mit dem systemeigenen Dateiauswahl-Dialog interagieren – dies wird vom Browser gehandhabt, nicht von der Seite.
Tastenkombination
Drücken Sie eine Taste oder Tastenkombination auf der Seite. Tasten werden mit + verbunden und im Kontext des zuvor fokussierten Elements gesendet.
Beispiele:
Drücke "Strg" + "C"Drücke "Strg" + "Shift" + "A"Drücke "Enter"
Verwenden Sie URL ändern – nicht Tastenkombination – für die Navigation auf Browserebene. Zurück, Vorwärts oder Neuladen ist eine andere Aktion, selbst wenn Sie dies als Benutzer mit einem Tastaturkürzel tun würden. "Drücke Alt+Links" navigiert nicht zuverlässig zurück; schreiben Sie stattdessen "Gehe zurück".
Ebenso benötigen Sie keinen Tastenkombinations-Schritt, um einen eingegebenen Wert mit Enter zu bestätigen – Eingabe erledigt das automatisch, wenn Sie es erwähnen.
Warten
Warten Sie für eine feste Zeitdauer oder bis eine Bedingung erfüllt ist. Geben Sie die Zeit (mit optionaler Einheit – Standard Millisekunden) oder eine klare Beschreibung dessen an, worauf gewartet werden soll.
Warte 5 SekundenWarte 500 MillisekundenWarte, bis der Lade-Spinner verschwindetWarte, bis der "Speichern"-Button aktiviert ist
Die maximale Wartezeit beträgt 180 Sekunden (3 Minuten). Sowohl Wartezeiten mit fester Dauer als auch Warten-bis-Bedingung-Schritte, die mehr anfordern, werden automatisch auf 180 Sekunden begrenzt — der Schritt wird weiterhin ausgeführt (eine Warnung wird protokolliert) und schlägt nicht fehl.
Explizite Wartezeiten sind oft ein Warnsignal. msg.ZenTestAI wartet bereits automatisch darauf, dass die Seite stabil ist, bevor ein Schritt ausgeführt wird (siehe Automatisches Warten). Wenn Sie dazu neigen, manuelle Wartezeiten einzufügen, untersuchen Sie zuerst das zugrunde liegende Timing-Problem.
Browser-Tab wechseln
Wechseln Sie zu einem Browser-Tab, öffnen oder schließen Sie ihn. Erwähnen Sie den Tab über den 1-basierten Index oder über die URL / den Titel. Detailliertes Verhalten wird unter Tab-Handhabung behandelt.
URL ändern / Navigation
Navigieren Sie im aktuellen Browser-Tab. Fünf Varianten:
1. Zu einer URL navigieren – absolut oder partiell. Hash-only / Pfad-only Änderungen funktionieren.
Navigiere zu "https://www.msg-systems.com"Ändere den Pfad der URL zu "/about"Ändere den Hash der URL zu "#contact"
2. Zurück navigieren – entspricht dem Zurück-Button des Browsers.
Gehe zurückNavigiere zur vorherigen Seite
3. Vorwärts navigieren – entspricht dem Vorwärts-Button des Browsers.
Gehe vorwärts
4. Neu laden – aktuelle Seite aktualisieren.
Lade die Seite neuAktualisieren
5. Heruntergeladene Datei öffnen – eine Datei, die während derselben Ausführung heruntergeladen wurde, in einem neuen Tab öffnen.
Öffne die heruntergeladene Datei "report.pdf"Öffne die zuletzt heruntergeladene Datei
Ohne Namen wird die zuletzt heruntergeladene Datei geöffnet. Sie öffnet sich in einem neuen Browser-Tab – Sie müssen möglicherweise manuell zurückwechseln.
Das Öffnen einer heruntergeladenen Datei ist nur möglich, wenn sie während der aktuellen Testausführung heruntergeladen wurde.
Bedingung
Führen Sie Schritte basierend auf einer einzelnen Booleschen Prüfung aus. Ein Bedingungsschritt benötigt:
- Die auszuwertende Bedingung.
- Den/die Teilschritt(e), die ausgeführt werden sollen, wenn sie wahr ist.
- Optional den/die Teilschritt(e), die ausgeführt werden sollen, wenn sie falsch ist.
Die Bedingung wird anhand des aktuellen Screenshots (visuelle Prüfung) oder statischer Fakten (URL, Parameterwerte, Anzahl der Downloads, …) ausgewertet.
Bedingungen fügen Ausführungszweige hinzu und machen Tests schwerer lesbar. Wenn Sie viele davon schreiben, sollten Sie in Erwägung ziehen, den Test in zwei einfachere Tests aufzuteilen.
Beispiele:
Wenn der Text "Hallo Welt" sichtbar ist, klicke auf den "Speichern"-Button, ansonsten klicke auf den "Abbrechen"-ButtonWenn die URL "https://www.msg-systems.com" ist, klicke auf den "Speichern"-ButtonWenn die Anzahl der Downloads 5 ist, klicke auf den "Speichern"-ButtonWenn der Text "Hallo Welt" sichtbar ist, klicke auf den "Speichern"-Button und gib "John Doe" in das Textfeld mit dem Label "Name" ein
Bedingungsgruppe
Verwenden Sie eine Bedingungsgruppe, wenn Sie mehrere sich gegenseitig ausschließende Zweige haben ("wenn A tue X, sonst wenn B tue Y, sonst tue Z"). Der Klassifikator erstellt einen Bedingungsgruppen-Schritt mit einem Bedingungs-Teilschritt pro Zweig, die jeweils die Aktionen für diesen Zweig enthalten.
Beispiel:
Wenn der angezeigte Wert höher als 5 ist, drücke den Zurück-Button, bis er 5 ist; ansonsten drücke den Vorwärts-Button, bis er 5 ist.
Dies wird aufgelöst in eine Bedingungsgruppe → zwei Bedingungs-Teilschritte → jeweils mit einem Schleifen-Teilschritt → jeweils mit einem Klick-Teilschritt.
Schleife / Wiederholung
Wiederholen Sie einen Schritt (oder eine Abfolge von Schritten) eine feste Anzahl von Malen oder bis eine Bedingung erfüllt ist. Der Schleifenschritt benötigt die Abbruchbedingung oder die Wiederholungsanzahl sowie den/die zu wiederholenden Teilschritt(e).
Beispiele:
Klicke 5 Mal auf den "Speichern"-ButtonKlicke auf den "Speichern"-Button, bis der Text "Hallo Welt" sichtbar istKlicke den Weiter-Button, bis der angezeigte Zähler 5 ist
Eine Schleife läuft maximal 10 Mal. Danach nimmt der Agent an, dass die Aktion nicht erreichbar ist, und bricht den Test ab.
Parameterwert speichern
Lesen Sie einen Wert von der Seite (oder der URL, einem Attribut, einer Anzahl, …) und speichern Sie ihn in einem Parameter, damit spätere Schritte über [[ParameterName]] darauf verweisen können.
Speichere die Anzahl der Zeilen in der Tabelle als Parameter [[ROW_COUNT]]Speichere den Seitentitel im Parameter [[CURRENT_TITLE]]
Siehe Parameter und Testdaten, wie gespeicherte Parameter mit Varianten, Makros und Validierungen interagieren.
Zu Transaktion gehen (nur SAP)
Nur verfügbar, wenn die zu testende Seite als SAP Web GUI identifiziert ist. Navigiert zur angegebenen SAP-Transaktion per Code.
Gehe zu Transaktion SE11Öffne SAP-Transaktion SE16
Für andere Applikationen wird dieselbe Formulierung als Klick auf ein Navigationselement klassifiziert.
Parameter, Makros und Template-Ausdrücke
Drei Syntaxen werden in Schrittbeschreibungen und Feldwerten erkannt und vom Klassifikator unverändert gelassen:
| Syntax | Bedeutung | Mehr |
|---|---|---|
[[ParameterName]] | Verweis auf einen Parameter, aufgelöst pro Variante oder durch einen vorherigen Speichern-Schritt. | Parameter |
${=macroKeyword(args)} | Makroaufruf – führt eine wiederverwendbare Funktion aus und fügt den zurückgegebenen Wert ein. | Makros |
${ Freitext-Ausdruck } | Dynamische Berechnung, die von einem KI-Agenten ausgewertet wird (z. B. ${aktuelles Datum in DD.MM.YYYY}). Sparsam verwenden; Makros bevorzugen. | Dynamische Berechnungen |
Alle drei können innerhalb einer einzigen Schrittbeschreibung kombiniert werden – zum Beispiel ein Parameter als Makro-Argument: ${=global_addDays([[OFFSET]])}.