Test Workflows
Test Workflows sind der zentrale Baustein für automatisiertes Testen in Autemos. Sie bieten eine visuelle, node-basierte Darstellung der Testlogik, die es Benutzern ermöglicht, automatisierte Tests effizient zu entwerfen, anzupassen und zu debuggen.
Ein typischer Workflow besteht aus aufeinanderfolgenden Schritten wie dem Öffnen einer Anwendung, der Interaktion mit UI-Elementen, der Validierung von Ergebnissen und der Datenverwaltung. Während die meisten Workflows linear sind, unterstützt Autemos auch bedingte Logik und Schleifen für fortgeschrittenere Testszenarien.
Was Sie mit Test Workflows tun können
- Aufgezeichnete Tests verfeinern und benutzerdefinierte Logik hinzufügen
- Validierungen und Assertions hinzufügen, um das Anwendungsverhalten zu überprüfen
- Testdaten für dynamische, wiederverwendbare Szenarien integrieren
- Ausführung Schritt für Schritt mit Breakpoints und Live-Ansicht debuggen
- Testbereitschaft vor der automatisierten Headless-Ausführung sicherstellen
Erstellen und Bearbeiten
Die Test Workflows Übersicht listet alle vorhandenen Tests auf. Die Schaltfläche + New Workflow öffnet eine leere Canvas. Die Schaltfläche Record Workflow navigiert zum Aufzeichnungsmodul, in dem Tests mit einem Klick-Recorder oder einem KI-Chatbot erstellt werden können. Workflows können zwischen Listen- und Kachelansicht umgeschaltet, gesucht, sortiert und ausgewählt werden.
Jeder Schritt im Workflow wird durch einen Node dargestellt, der eine bestimmte Aktion ausführt, wie z. B. das Klicken auf ein Element, die Texteingabe oder die Validierung einer Bedingung.
Kernkonzepte
Lineare Ausführung
Die meisten Workflows folgen einer von oben nach unten ausgeführten Abfolge von Schritten.
Bedingte Logik
Verwenden Sie If-Nodes, um die Ausführung basierend auf Laufzeitbedingungen zu verzweigen.
Schleifen
Iterieren Sie über Daten oder wiederholen Sie Aktionen mit Loop-Nodes für datengetriebenes Testen.
Drag & Drop Bearbeitung
Nodes können direkt auf der visuellen Canvas hinzugefügt, entfernt und umsortiert werden.
Nodes verstehen
Nodes sind die grundlegenden Einheiten eines Test Workflows. Jeder Node repräsentiert eine einzelne Aktion oder Operation:
- Interaktion mit UI-Elementen (Click, Type)
- Informationen erfassen (Extract Text, Screenshot)
- Verhalten validieren (Assert, Soft Verify)
- Daten verwalten (Test Data, Input-Variablen)
- Ablauf steuern (If, Loop, Wait)
Nodes können je nach Typ mit Variablen und gespeicherten Daten interagieren. Eine detaillierte Dokumentation für jeden Node ist in den Node-Referenzabschnitten weiter unten verfügbar.
Mit Testdaten und Variablen arbeiten
Test Workflows unterstützen eine flexible Datenverwaltung für dynamische und wiederverwendbare Tests. Daten können in Variablen gespeichert, während der Ausführung zwischengespeichert und in späteren Schritten wiederverwendet werden.
- Werte in Workflow-Variablen speichern und schrittübergreifend wiederverwenden
- Den Test Data Easy-Node verwenden, um tabellarische Datensätze inline zu binden
- Auf Zeilendaten zugreifen über
{{easyData.field}}oder{{easyDataRecords.0.field}} - Extern verwaltete Datensätze für die workflow-übergreifende Wiederverwendung verknüpfen
Unterstützte Testtypen
Test Workflows unterstützen mehrere Testtypen innerhalb eines einzelnen Ablaufs — unabhängig oder kombiniert:
- Web-Testing — browserbasierte UI-Automatisierung
- Mobile Testing — iOS- und Android-App-Tests
- API-Testing — direkte HTTP-Request-Validierung
Dies ermöglicht End-to-End-Szenarien wie: Mobile Aktion → API-Validierung → Web-Überprüfung.
Ihren ersten Test Workflow in 5 Minuten erstellen
Dieses Schnell-Tutorial führt Sie durch das Erstellen, Verfeinern und Debuggen eines einfachen Test Workflows in Autemos. Am Ende werden Sie einen funktionierenden, testbereiten Workflow haben.
Einen Test Workflow öffnen
Im Demo-Projekt finden Sie Beispieltests für Mobile, Web und einen kombinierten Ablauf. Nach der Auswahl eines Tests sehen Sie die Workflow-Canvas, auf der jeder Schritt als Node dargestellt ist. Aufgezeichnete Workflows umfassen typischerweise den App-Start, grundlegende Benutzerinteraktionen und Navigationsschritte.
Die Workflow-Struktur prüfen
Scannen Sie den Workflow von oben nach unten. Achten Sie auf eine klare Schrittabfolge (z. B. Login → Navigate → Aktion), fehlende Validierungen und fest codierte oder unklare Werte. In dieser Phase sind die meisten Workflows funktionsfähig, aber noch nicht robust oder wiederverwendbar.
Eine Validierung hinzufügen
Fügen Sie nach einer wichtigen Aktion einen Assert- oder Soft Verify-Node hinzu, um zu überprüfen, ob ein Bildschirm sichtbar ist, ein Wert korrekt ist oder ein Element vorhanden ist.
Testdaten einführen
Ersetzen Sie statische Werte durch dynamische Daten mithilfe des Test Data Easy-Nodes. Fügen Sie den Node direkt nach dem Startnode am Anfang des Workflows ein. Dadurch kann Ihr Workflow mit verschiedenen Datensätzen ausgeführt und szenarioübergreifend wiederverwendet werden.
Aufräumen und Strukturieren
Benennen Sie Nodes zur besseren Übersicht um (z. B. "Click Button" → "Click Login"), gruppieren Sie logische Schritte gedanklich (Login, Navigation, Aktion) und entfernen Sie unnötige Schritte. Ein übersichtlicher Workflow ist einfacher zu debuggen und zu pflegen.
Den Workflow debuggen
Wechseln Sie in den Debug-Modus. Setzen Sie einen Breakpoint bei einem kritischen Schritt, führen Sie den Workflow aus, arbeiten Sie Schritt für Schritt und beobachten Sie das Verhalten in der Live-Ansicht. Nutzen Sie das Execution Log, um Timing, Erfolg/Fehler und Fehler zu überprüfen. Beheben Sie Probleme sofort.
Testbereitschaft bestätigen
Ihr Workflow ist bereit, wenn: alle Schritte erfolgreich ausgeführt werden, Validierungen vorhanden sind, Testdaten korrekt konfiguriert sind und beim Debuggen keine blockierenden Fehler auftreten. Der Workflow kann nun zuverlässig in automatisierten Runs über den Scheduler ausgeführt werden.
Einen Workflow debuggen
Autemos bietet leistungsstarke Debugging-Funktionen, um sicherzustellen, dass Workflows wie erwartet funktionieren. Wechseln Sie direkt von der Workflow-Canvas zwischen Run- und Debug-Modus.
Debug-Modus
Beim Ausführen eines Workflows im Debug-Modus können Sie:
- Breakpoints bei kritischen Schritten setzen
- Schritte einzeln mit der Step-Schaltfläche ausführen
- Die Ausführung jederzeit fortsetzen oder anhalten
Execution Log
Das Execution Log liefert schrittweise Statusaktualisierungen, Ausführungszeiten und detaillierte Fehlerinformationen. Verwenden Sie es, um genau zu ermitteln, welcher Schritt fehlgeschlagen ist und warum.
Live-Ausführungsansicht
Für UI-basierte Tests (Web oder Mobile) zeigt eine Live-Ansicht die Echtzeit-Interaktion mit der Anwendung, eine visuelle Bestätigung jedes Schritts und die Möglichkeit, die Ansicht in einem separaten Tab zu öffnen. Dies erleichtert die schnelle Identifizierung und Behebung von Problemen.
Error Handling & Soft Verify
Workflows unterstützen flexible Fehlerbehandlungsstrategien.
Standardverhalten
Standardmäßig stoppt ein Workflow die Ausführung, wenn ein Schritt fehlschlägt. Dies ist die sicherste Option und stellt sicher, dass Probleme sofort sichtbar werden.
Soft Verify
Bei Verwendung von Soft Verify werden Fehler protokolliert und die Ausführung fortgesetzt. Dies ist nützlich, wenn mehrere Validierungen ausgeführt werden sollen und Sie ein vollständiges Testergebnis anstelle eines vorzeitigen Abbruchs wünschen.
Wann welchen Ansatz verwenden
Standard (Bei Fehler stoppen)
Verwenden Sie dies, wenn ein Schrittfehler alle nachfolgenden Schritte sinnlos macht. Wenn z. B. der Login fehlschlägt, macht eine Fortsetzung keinen Sinn.
Soft Verify (Fortsetzen)
Verwenden Sie dies, wenn Sie alle Validierungsfehler in einem einzigen Run sammeln möchten, z. B. bei Formularfeldvalidierungen oder UI-Zustandsüberprüfungen.
Einen Workflow für die Ausführung vorbereiten
Bevor ein Workflow automatisch im Headless-Modus ausgeführt werden kann (z. B. in einem Scheduler), muss er testbereit sein. Ein Test gilt als bereit, wenn:
- Alle Schritte erfolgreich ausgeführt werden
- Datenabhängigkeiten aufgelöst sind
- Keine blockierenden Fehler mehr vorhanden sind
Self-Healing
Autemos bietet Self-Healing-Funktionen für die Element-Identifikation. Wenn sich ein UI-Element zwischen Testläufen ändert — z. B. wenn eine CSS-Klasse, ID oder ein Attribut geändert wird — kann das System versuchen, sich automatisch zu erholen.
Geringere Instabilität
Tests funktionieren auch bei kleineren UI-Änderungen ohne manuellen Eingriff weiterhin.
Geringerer Wartungsaufwand
Self-Healing reduziert den Zeitaufwand für die Aktualisierung von Selectors nach Anwendungsupdates.
Open Browser
BrowserDer Open Browser-Node startet eine neue Browser-Instanz für die Ausführung webbasierter Testschritte. Er definiert den Ausführungskontext, einschließlich der Zielplattform und ob der Browser im Headless-Modus läuft.
Wann verwenden
- Start eines Web-Test-Workflows
- Definition der Ausführungsumgebung für browserbasiertes Testen
- Ausführung von Tests auf einer bestimmten Plattform oder Konfiguration
- Vorbereitung von Workflows für lokales Debugging oder automatisierte Ausführung
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Headless | Führt den Browser ohne sichtbare Benutzeroberfläche aus | No | true |
| Platform | Definiert die Ziel-Ausführungsplattform | Yes | Chrome |
| Test Type | Definiert die Art der Testausführung | Yes | Web |
Verhalten
- Initialisiert eine neue Browser-Session
- Wendet die ausgewählte Plattform und Konfiguration an
- Startet den Browser im sichtbaren Modus (zum Debuggen) oder im Headless-Modus (für automatisierte Ausführung)
- Bereitet die Umgebung für alle nachfolgenden Browser-Interaktionen vor
Ausgabe
Keine direkte Ausgabe. Der Node etabliert eine Browser-Session, die von allen nachfolgenden Schritten verwendet wird.
Fehlerbehandlung
- Stoppt die Ausführung, wenn der Browser nicht gestartet werden kann
- Stoppt die Ausführung, wenn die ausgewählte Plattform oder Konfiguration ungültig ist
Beispiel — Einen Chrome-Web-Test starten
| Parameter | Wert |
|---|---|
| Headless | false |
| Platform | Chrome |
| Test Type | Web |
Best Practices
- Verwenden Sie den nicht-Headless-Modus während der Entwicklung und des Debuggings
- Verwenden Sie den Headless-Modus für automatisierte und geplante Ausführungen
- Stellen Sie sicher, dass die richtige Plattform für Ihr Testszenario ausgewählt ist
- Behalten Sie diesen Node am Anfang Ihres Workflows
- Vermeiden Sie das Mischen mehrerer Browser-Sessions innerhalb eines einzelnen Workflows, sofern nicht ausdrücklich erforderlich
Close Browser
BrowserDer Close Browser-Node beendet die aktive Browser-Session. Er wird typischerweise am Ende eines Test Workflows verwendet, um Ressourcen freizugeben und die Ausführung abzuschließen.
Wann verwenden
- Beenden eines Web-Test-Workflows
- Freigabe von Browser-Ressourcen nach der Ausführung
- Sicherstellen eines sauberen Test-Lebenszyklus für wiederholte oder geplante Ausführungen
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Keep Alive | Hält die Browser-Session nach der Ausführung offen (nützlich für das Debugging) | No | false |
Verhalten
- Schließt die aktive Browser-Session und beendet alle Interaktionen
- Gibt zugehörige Ressourcen frei
- Wenn Keep Alive aktiviert ist: Die Browser-Session bleibt offen — nützlich für Debugging oder manuelle Inspektion
Ausgabe
Keine Ausgabe.
Beispiel — Browser am Ende des Workflows schließen
| Parameter | Wert |
|---|---|
| Keep Alive | false |
Verwenden Sie Keep Alive = true nur beim Debugging, um den Endzustand zu überprüfen.
Best Practices
- Platzieren Sie diesen Node am Ende Ihres Workflows
- Verwenden Sie
Keep Alive = truenur beim Debugging - Schließen Sie Sessions bei automatisierten Runs immer, um Ressourcenlecks zu vermeiden
Type
UI InteractionDer Type-Node gibt Text in ein bestimmtes Eingabefeld ein. Er wird verwendet, um Benutzereingaben in Formularen, Suchfeldern, Anmeldemasken oder beliebigen bearbeitbaren UI-Elementen zu simulieren.
Wann verwenden
- Text in Eingabefelder eingeben
- Formulare ausfüllen (z. B. Name, E-Mail, Passwort)
- Dynamische Werte aus Testdaten bereitstellen
- Realistisches Benutzer-Tippverhalten simulieren
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Field | Ziel-Eingabefeld | Yes | LoginPage.passwordField |
| Value | Einzugebender Text | Yes | MySecret123 |
| Bindings | Erlaubt dynamische Werte aus Variablen oder Testdaten | No | ${password} |
| Clear First | Löscht vorhandenen Inhalt vor der Eingabe | No | true |
Verhalten
- Wartet, bis das Ziel-Eingabefeld verfügbar und interaktionsfähig ist
- Löscht optional vorhandenen Inhalt, wenn Clear First aktiviert ist
- Gibt den angegebenen Wert ein und löst eingabebezogene Ereignisse aus
- Schlägt fehl, wenn das Feld nicht gefunden oder nicht damit interagiert werden kann
Ausgabe
Keine Ausgabe.
Beispiel — Einen Verifizierungscode eingeben
| Parameter | Wert |
|---|---|
| Field | VerificationPage.codeField |
| Value | 123456 |
| Clear First | true |
Best Practices
- Aktivieren Sie Clear First, wenn Felder bereits Werte enthalten könnten
- Verwenden Sie Bindings für dynamische und wiederverwendbare Testeingaben
- Vermeiden Sie das Hardcodieren von sensiblen Daten (z. B. Passwörtern)
- Fügen Sie einen Assert- oder Soft Verify-Node hinzu, um zu validieren, dass der korrekte Wert angewendet wurde
- Verwenden Sie stabile Eingabefelder aus dem Page Object Repository
Click
UI InteractionDer Click-Node führt eine Klick- oder Tipp-Aktion auf einem bestimmten UI-Element aus. Er wird verwendet, um Schaltflächen auszulösen, zwischen Bildschirmen zu navigieren und Formulare abzusenden.
Wann verwenden
- Schaltflächen oder Links auslösen
- Zwischen Bildschirmen navigieren
- Formulare absenden
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Field | Ziel-UI-Element | Yes | LoginPage.loginButton |
| Timeout | Maximale Wartezeit in Millisekunden | No | 5000 |
Verhalten
- Wartet, bis das Element sichtbar ist
- Führt die Klick-Aktion aus
- Schlägt fehl, wenn das Element nicht innerhalb des Timeouts gefunden wird
Ausgabe
Keine Ausgabe.
Beispiel — Die Login-Schaltfläche klicken
| Parameter | Wert |
|---|---|
| Field | LoginPage.loginButton |
Best Practices
- Verwenden Sie Elemente aus dem Page Object Repository für Stabilität
- Stellen Sie sicher, dass das Element vor der Interaktion sichtbar ist
- Profitiert von Self-Healing, wenn sich die Element-Identifikation ändert
Double Click
UI InteractionDer Double Click-Node führt eine Doppelklick-Aktion auf einem bestimmten UI-Element aus. Er wird für Interaktionen verwendet, die eine schnelle Zweifach-Klick-Eingabe erfordern, wie das Öffnen von Elementen, das Aktivieren von Bearbeitungsmodi oder das Auslösen erweiterter UI-Verhaltensweisen.
Wann verwenden
- Ein einzelner Klick reicht nicht aus, um die gewünschte Aktion auszulösen
- Interaktion mit Elementen, die Doppelklick erfordern (z. B. Listen, Tabellen, Datei-Explorer)
- Aktivierung von Bearbeitungs- oder Detailansichten in Desktop-ähnlichen Webanwendungen
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Field | Ziel-UI-Element oder Selector | Yes | UserList.firstRow |
| Timeout | Maximale Wartezeit in Millisekunden | No | 5000 |
Verhalten
- Wartet, bis das Zielelement verfügbar und interaktionsfähig ist
- Führt zwei schnelle aufeinanderfolgende Klick-Aktionen auf dem Element aus
- Das Timing zwischen den Klicks wird automatisch gesteuert
- Schlägt fehl, wenn das Element nicht innerhalb des definierten Timeouts gefunden wird
Ausgabe
Keine Ausgabe.
Fehlerbehandlung
- Stoppt die Ausführung, wenn das Element nicht gefunden oder nicht damit interagiert werden kann
- Kann mit Soft Verify kombiniert werden, um die Ausführung bei einem Fehler fortzusetzen
- Profitiert von Self-Healing, wenn sich die Element-Identifikation ändert
Beispiel — Einen Datensatz per Doppelklick öffnen
| Parameter | Wert |
|---|---|
| Field | UserList.firstRow |
| Timeout | 5000 |
Diese Aktion öffnet die Detailansicht per Doppelklick.
Best Practices
- Verwenden Sie Double Click nur, wenn er von der Anwendung ausdrücklich benötigt wird
- Stellen Sie sicher, dass das Element sichtbar und nicht verdeckt ist, bevor es ausgeführt wird
- Vermeiden Sie Double Click als Workaround für Timing-Probleme
Right Click
UI InteractionDer Right Click-Node führt eine Rechtsklick-Aktion auf einem bestimmten UI-Element aus. Er wird typischerweise verwendet, um Kontextmenüs zu öffnen oder sekundäre Aktionen auszulösen, die über einen Standardklick nicht verfügbar sind.
Wann verwenden
- Ein Kontextmenü öffnen
- Auf sekundäre Aktionen eines Elements zugreifen
- Mit Tabellenzeilen, Karten, Dateien oder Listenelementen interagieren
- Desktop-ähnliches Verhalten in Webanwendungen testen
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Field | Ziel-UI-Element oder Selector | Yes | UserList.firstRow |
| Timeout | Maximale Wartezeit in Millisekunden | No | 5000 |
Verhalten
- Wartet, bis das Zielelement verfügbar und interaktionsfähig ist
- Führt eine Rechtsklick-Aktion auf dem Element aus
- Öffnet typischerweise das Kontextmenü des Elements
- Schlägt fehl, wenn das Element nicht gefunden oder nicht damit innerhalb des Timeouts interagiert werden kann
Ausgabe
Keine Ausgabe.
Fehlerbehandlung
- Stoppt die Ausführung, wenn das Zielelement nicht gefunden oder nicht damit interagiert werden kann
- Kann mit Soft Verify kombiniert werden, um die Ausführung bei einem Fehler fortzusetzen
- Profitiert von Self-Healing, wenn sich die Element-Identifikation ändert
Beispiel — Das Kontextmenü für einen Benutzerdatensatz öffnen
| Parameter | Wert |
|---|---|
| Field | UserList.firstRow |
| Timeout | 5000 |
Nachdem das Kontextmenü geöffnet ist, fahren Sie im Workflow mit einem Click-Node fort, um die gewünschte Menüoption auszuwählen.
Best Practices
- Folgen Sie mit einem Click-Node, um die gewünschte Menüoption auszuwählen
- Fügen Sie einen Validierungsschritt hinzu, um zu bestätigen, dass das erwartete Kontextmenü erscheint
- Verlassen Sie sich nicht auf browsernative Kontextmenüs — das Verhalten kann zwischen Browsern variieren
Hover
UI InteractionDer Hover-Node bewegt den Cursor über ein bestimmtes UI-Element, ohne einen Klick auszuführen. Er wird verwendet, um hover-basierte Verhaltensweisen wie Tooltips, Dropdown-Menüs oder versteckte UI-Elemente auszulösen.
Wann verwenden
- Ein Menü oder Element erscheint nur beim Hovern
- Tooltips oder Overlays auslösen
- Versteckte Schaltflächen oder Aktionen einblenden
- UI-Verhalten testen, das von Mausbewegungen abhängt
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Field | Ziel-UI-Element oder Selector | Yes | Navigation.menuItem |
| Timeout | Maximale Wartezeit in Millisekunden | No | 5000 |
Verhalten
- Wartet, bis das Zielelement verfügbar und sichtbar ist
- Bewegt den Cursor über das Element
- Löst jegliches hover-basiertes UI-Verhalten aus (z. B. Dropdowns, Tooltips)
- Führt keinen Klick oder weitere Interaktion aus
- Schlägt fehl, wenn das Element nicht innerhalb des Timeouts gefunden wird
Ausgabe
Keine Ausgabe.
Fehlerbehandlung
- Stoppt die Ausführung, wenn das Element nicht gefunden oder gehovt werden kann
- Kann mit Soft Verify kombiniert werden, um die Ausführung bei einem Fehler fortzusetzen
- Profitiert von Self-Healing, wenn sich die Element-Identifikation ändert
Beispiel — Ein Dropdown-Menü per Hover öffnen
| Parameter | Wert |
|---|---|
| Field | Navigation.productsMenu |
| Timeout | 5000 |
Folgen Sie diesem Schritt mit einem Click-Node, um eine Option aus dem Dropdown auszuwählen.
Best Practices
- Kombinieren Sie mit einem Folgeschritt (z. B. Click oder Assert), um das Ergebnis zu validieren
- Stellen Sie sicher, dass das Element vor dem Hovern sichtbar ist
- Vermeiden Sie es, sich auf reine Hover-Interaktionen zu verlassen, wenn Alternativen vorhanden sind
Drag & Drop
UI InteractionDer Drag & Drop-Node bewegt ein UI-Element von einem Ort zum anderen. Er wird verwendet, um Interaktionen wie das Verschieben von Elementen zwischen Listen, das Umsortieren von Elementen, das Hochladen per Drop-Zone oder die Arbeit mit visuellen Editoren zu testen.
Wann verwenden
- Ein Element von einem Quellelement zu einem Zielbereich verschieben
- Drag-and-Drop-Verhalten in Web- oder Mobile-Anwendungen testen
- Elemente in einer Liste neu anordnen oder Objekte in Container ablegen
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Source Field | Zu ziehendes UI-Element | Yes | KanbanCard.todoItem |
| Target Field | UI-Element oder Bereich, in den das Quellelement abgelegt werden soll | Yes | KanbanColumn.inProgress |
Verhalten
- Wartet, bis sowohl Quell- als auch Zielelemente verfügbar und interaktionsfähig sind
- Zieht das Quellelement zum Zielort und lässt es los
- Schlägt fehl, wenn eines der Elemente nicht innerhalb des Timeouts gefunden wird
Ausgabe
Keine Ausgabe.
Beispiel — Eine Aufgabenkarte von "To Do" nach "In Progress" verschieben
| Parameter | Wert |
|---|---|
| Source Field | TaskBoard.todoCard |
| Target Field | TaskBoard.inProgressColumn |
Best Practices
- Verwenden Sie stabile Page Object Repository-Elemente für Quelle und Ziel
- Fügen Sie nach der Aktion einen Assert- oder Soft Verify-Node hinzu, um zu bestätigen, dass das Element erfolgreich verschoben wurde
- Vermeiden Sie genaue Pixel-Positionen, wenn element-basiertes Ziehen verfügbar ist
- Bevorzugen Sie einfachere Interaktionen, wenn die Anwendung eine schaltflächenbasierte Alternative bietet
Press Key
UI InteractionDer Press Key-Node sendet einen Tastendruck an ein ausgewähltes UI-Element. Er wird für tastaturgesteuerte Interaktionen wie das Absenden von Formularen, das Wechseln zwischen Feldern, das Schließen von Dialogen oder das Auslösen von Tastenkombinationen verwendet.
Wann verwenden
- Formular mit Enter absenden
- Mit Tab zum nächsten Feld wechseln
- Dialog mit Escape schließen
- Barrierefreiheit oder Tastaturnavigation testen
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Field | Ziel-UI-Element, das den Tastendruck erhalten soll | Yes | LoginPage.passwordField |
| Key | Zu sendende Taste | Yes | Enter |
Verhalten
- Wartet, bis das ausgewählte Feld oder Element verfügbar ist
- Fokussiert das Zielelement wenn erforderlich
- Sendet den konfigurierten Tastendruck
- Löst das entsprechende Anwendungsverhalten aus
- Schlägt fehl, wenn das Zielelement nicht gefunden oder der Tastendruck nicht ausgeführt werden kann
Ausgabe
Keine Ausgabe.
Fehlerbehandlung
- Stoppt die Ausführung, wenn das Zielelement nicht gefunden oder nicht damit interagiert werden kann
- Kann mit Soft Verify kombiniert werden, um die Ausführung bei einem Fehler fortzusetzen
- Profitiert von Self-Healing, wenn sich die Element-Identifikation ändert
Beispiel — Ein Login-Formular mit Enter absenden
| Parameter | Wert |
|---|---|
| Field | LoginPage.passwordField |
| Key | Enter |
Der Tastendruck sendet das Formular ab und löst den nächsten Seitenladevorgang aus.
Best Practices
- Wählen Sie das Element aus, das den Tastendruck erhalten soll
- Verwenden Sie Tab und Escape sorgfältig — das Verhalten variiert je nach Fokuszustand
- Fügen Sie nach dem Tastendruck einen Assert- oder Soft Verify-Node hinzu, um das erwartete Ergebnis zu validieren
Scroll
UI InteractionDer Scroll-Node scrollt den Viewport entweder zu einem bestimmten UI-Element oder zu einer definierten Position anhand von Koordinaten. Er bringt Elemente in den sichtbaren Bereich oder steuert das Scroll-Verhalten explizit in komplexen Layouts.
Wann verwenden
- Ein Element ist im aktuellen Viewport nicht sichtbar
- Vorbereitung für Interaktionen wie Click oder Type
- Scroll-Verhalten testen (z. B. Lazy Loading, lange Seiten)
- Zu einer bestimmten Position innerhalb einer Seite oder eines Containers scrollen
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Field | Ziel-UI-Element (verwendet beim Scrollen zu einem Element) | No | CheckoutPage.submitButton |
| Scroll To | Definiert den Scroll-Modus (Element oder Position) | Yes | element |
| X | Horizontaler Scroll-Versatz in Pixeln (Positionsmodus) | No | 0 |
| Y | Vertikaler Scroll-Versatz in Pixeln (Positionsmodus) | No | 500 |
* Field ist nur erforderlich, wenn Scroll To = element.
Scroll-Modi
Scroll To Element
Scrollt, bis das Zielelement im Viewport sichtbar ist.
Scroll To Position
Scrollt zu den angegebenen X/Y-Koordinaten ohne ein UI-Element zu benötigen.
Ausgabe
Keine Ausgabe.
Beispiel — Zu einem Element scrollen
| Parameter | Wert |
|---|---|
| Field | CheckoutPage.submitButton |
| Scroll To | element |
Beispiel — Zu einer Position scrollen
| Parameter | Wert |
|---|---|
| Scroll To | position |
| X | 0 |
| Y | 800 |
Best Practices
- Bevorzugen Sie element-basiertes Scrollen für Stabilität
- Vermeiden Sie fest codierte Koordinaten, wenn ein Page Object-Element verfügbar ist
- Kombinieren Sie mit einer Folgeaktion (z. B. Click oder Assert)
- Stellen Sie sicher, dass der richtige Scroll-Container in komplexen Layouts angesprochen wird
Select
UI InteractionDer Select-Node wählt eine Option aus einem Dropdown-Feld aus. Er wird für Formulare, Filter, Konfigurationsfelder oder beliebige UI-Elemente verwendet, bei denen der Benutzer einen Wert aus einer Liste verfügbarer Optionen auswählen muss.
Wann verwenden
- Einen Wert aus einem Dropdown auswählen
- Formularfelder mit vordefinierten Optionen setzen
- Filter oder Kategorien anwenden
- Dynamische Werte über Bindings verwenden
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Field | Dropdown-Feld für die Interaktion | Yes | PaymentPage.countryDropdown |
| Value | Auszuwählender Optionswert | Yes | Switzerland |
| Bindings | Erlaubt die dynamische Bereitstellung des Werts | No | country |
| Select By | Definiert, wie die Option ausgewählt werden soll | Yes | value |
Select By Optionen
| Option | Beschreibung |
|---|---|
value | Wählt die Option anhand ihres zugrunde liegenden Werts aus (z. B. CH) |
text | Wählt die Option anhand ihres sichtbaren Labels aus (z. B. Switzerland) |
index | Wählt die Option anhand ihrer Position in der Liste aus (z. B. 2) |
Verhalten
- Wartet, bis das Dropdown-Feld verfügbar ist
- Sucht die passende Option basierend auf der ausgewählten Strategie (Text, Wert oder Index)
- Wählt die passende Option aus
- Schlägt fehl, wenn das Feld oder die Option nicht gefunden werden können
Ausgabe
Keine Ausgabe.
Beispiel — Ein Land aus einem Zahlungsformular auswählen
| Parameter | Wert |
|---|---|
| Field | PaymentPage.countryDropdown |
| Value | Switzerland |
| Select By | text |
Best Practices
- Bevorzugen Sie die Auswahl nach sichtbarem Text, wenn der Wert für Benutzer bedeutsam ist
- Verwenden Sie Bindings, wenn Dropdown-Werte aus Testdaten kommen sollen
- Vermeiden Sie index-basierte Auswahl, außer wenn die Reihenfolge der Optionen stabil ist
- Fügen Sie nach der Auswahl einen Assert- oder Soft Verify-Node hinzu, um zu bestätigen, dass der Wert angewendet wurde
Screenshot
UI InteractionDer Screenshot-Node erstellt ein Bild des aktuellen Anwendungszustands während der Testausführung. Er kann entweder den sichtbaren Viewport oder die gesamte Seite erfassen, je nach Konfiguration.
Wann verwenden
- Testausführungsschritte dokumentieren
- Beweise für Testergebnisse erfassen
- Probleme während der Ausführung debuggen
- Wichtige Checkpoints in einem Workflow aufzeichnen
Verhalten
- Erfasst den aktuellen Zustand der Anwendung zur Laufzeit
- Wenn Full Page aktiviert ist: Scrollt und erfasst die gesamte Seite
- Andernfalls: Erfasst nur den sichtbaren Viewport
- Setzt die Ausführung unmittelbar nach der Aufnahme fort
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Name | Name der Screenshot-Datei | Yes | login_success |
| Bindings | Erlaubt dynamische Benennung über Variablen | No | ${testStep}_screenshot |
| Full Page | Erfasst die gesamte Seite anstatt nur des sichtbaren Viewports | No | true |
Verhalten
- Erfasst den aktuellen Zustand der Anwendung zur Laufzeit
- Speichert den Screenshot mit dem definierten Namen
- Wenn Full Page aktiviert ist: Scrollt und erfasst die gesamte Seite
- Andernfalls: Erfasst nur den sichtbaren Viewport
- Setzt die Ausführung unmittelbar nach der Aufnahme fort
Ausgabe
Screenshot-Datei, gespeichert als Teil der Testausführungsergebnisse.
Fehlerbehandlung
- Schlägt typischerweise nicht fehl, außer wenn die Screenshot-Aufnahme nicht möglich ist
- Kann mit Soft Verify kombiniert werden, wenn in Validierungsabläufen verwendet
- Hat keinen Einfluss auf den Anwendungszustand
Beispiel — Einen Screenshot nach dem Login aufnehmen
| Parameter | Wert |
|---|---|
| Name | after_login |
| Full Page | false |
Best Practices
- Verwenden Sie aussagekräftige Namen zur einfachen Identifikation von Screenshots
- Erfassen Sie Screenshots an kritischen Punkten (vor/nach wichtigen Aktionen)
- Vermeiden Sie zu viele Screenshots, um die Ausführung schlank zu halten
- Verwenden Sie Full Page nur wenn nötig — kann die Performance beeinträchtigen
Upload File
UI InteractionDer Upload File-Node lädt eine Datei in eine Anwendung über ein Datei-Eingabeelement hoch. Er simuliert die Auswahl einer Datei zum Hochladen durch den Benutzer, ohne mit dem nativen Dateiauswahl-Dialog zu interagieren.
Wann verwenden
- Dokumente, Bilder oder Anhänge hochladen
- Datei-Upload-Funktionalität in Formularen testen
- Dateien für Importprozesse bereitstellen
- Szenarien automatisieren, die eine Dateiauswahl erfordern
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Field | Ziel-Datei-Eingabeelement | Yes | UploadPage.fileInput |
| File Path | Pfad zur hochzuladenden Datei | Yes | /files/test-document.pdf |
| Bindings | Erlaubt dynamische Dateipfade über Variablen | No | ${filePath} |
Verhalten
- Wartet, bis das Datei-Eingabeelement verfügbar ist
- Setzt den Dateipfad direkt auf dem Eingabeelement
- Löst den Upload-Prozess aus, wie von der Anwendung definiert
- Schlägt fehl, wenn das Element nicht gefunden oder der Dateipfad nicht zugänglich ist
Ausgabe
Keine Ausgabe.
Beispiel — Ein PDF-Dokument hochladen
| Parameter | Wert |
|---|---|
| Field | UploadPage.fileInput |
| File Path | /files/test-document.pdf |
Best Practices
- Verwenden Sie Dateipfade, die in der Ausführungsumgebung zugänglich sind
- Bevorzugen Sie relative oder umgebungsabhängige Pfade wenn möglich
- Verwenden Sie Bindings, um die Dateiauswahl dynamisch zu gestalten
- Stellen Sie sicher, dass das Datei-Eingabeelement im Page Object Repository korrekt definiert ist
Switch Session
Session ControlDer Switch Session-Node wechselt die Ausführung zu einer anderen aktiven Session innerhalb desselben Workflows. Er ermöglicht die Interaktion mit mehreren Sessions, wie z. B. verschiedenen Browser-Instanzen oder mobilen Geräten, innerhalb eines einzelnen Test Workflows.
Wann verwenden
- Arbeit mit mehreren Browser-Sessions
- Testen von Interaktionen zwischen verschiedenen Benutzern (z. B. Sender/Empfänger-Szenarien)
- Wechsel zwischen Web- und Mobile-Sessions in einem kombinierten Workflow
- Umgang mit Multi-Session- oder Multi-Geräte-Testszenarien
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Target Session | Name oder Bezeichner der Session, zu der gewechselt werden soll | Yes | Session_2 |
| Bindings | Erlaubt dynamische Session-Auswahl über Variablen | No | ${targetSession} |
Verhalten
- Wechselt den Ausführungskontext zur angegebenen aktiven Session
- Alle nachfolgenden Nodes werden innerhalb der ausgewählten Session ausgeführt
- Erstellt oder schließt keine Sessions — wechselt nur zwischen bestehenden
- Schlägt fehl, wenn die Ziel-Session nicht existiert oder nicht aktiv ist
Ausgabe
Keine Ausgabe.
Beispiel — Zu einer sekundären Browser-Session wechseln
| Parameter | Wert |
|---|---|
| Target Session | Session_2 |
Best Practices
- Verwenden Sie klare und konsistente Benennung für Sessions
- Stellen Sie sicher, dass Sessions erstellt und aktiv sind, bevor Sie wechseln
- Fügen Sie nach dem Wechsel Validierungsschritte hinzu, um den korrekten Kontext zu bestätigen
- Verwenden Sie diesen Node hauptsächlich für Multi-Benutzer- oder Multi-Kontext-Szenarien
Switch Frame
Session ControlDer Switch Frame-Node ändert den Ausführungskontext zu einem bestimmten iframe oder zurück zum übergeordneten Frame. Er ist erforderlich, wenn mit Elementen interagiert wird, die in iframes eingebettet sind.
Wann verwenden
- Interaktion mit Elementen innerhalb eines iframes
- Zurückwechseln von einem iframe zur Hauptseite
- Arbeit mit eingebetteten Inhalten wie Zahlungsdienstleistern, externen Widgets oder eingebetteten Anwendungen
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Frame Selector | Selector oder Referenz auf den Ziel-iframe | Yes | PaymentPage.paymentIframe |
| Switch To | Definiert den Zielkontext (Frame oder übergeordneter Frame) | Yes | frame |
* Frame Selector ist erforderlich, wenn Switch To = frame.
Switch To Optionen
| Option | Beschreibung |
|---|---|
frame | Wechselt den Ausführungskontext in den angegebenen iframe |
parent | Wechselt den Ausführungskontext zurück zum übergeordneten (äußeren) Frame |
Verhalten
Switch To Frame
Wartet, bis der iframe verfügbar ist, und wechselt den Ausführungskontext hinein. Alle nachfolgenden Aktionen werden innerhalb des iframes ausgeführt.
Switch To Parent
Wechselt den Ausführungskontext zurück zum übergeordneten (äußeren) Frame. Erforderlich, um weiterhin mit Elementen außerhalb des iframes zu interagieren.
Ausgabe
Keine Ausgabe.
Beispiel — In einen iframe wechseln
| Parameter | Wert |
|---|---|
| Frame Selector | PaymentPage.paymentIframe |
| Switch To | frame |
Beispiel — Zurück zum übergeordneten Frame wechseln
| Parameter | Wert |
|---|---|
| Switch To | parent |
Best Practices
- Wechseln Sie nach Abschluss der iframe-Interaktionen immer zurück zum übergeordneten Frame
- Verwenden Sie stabile iframe-Selectors aus dem Page Object Repository
- Halten Sie iframe-Interaktionen im Workflow zusammengroupiert
- Fügen Sie Validierungsschritte hinzu, um den korrekten Kontext zu bestätigen (z. B. Element-Vorhandensein)
Exit Frame
Session ControlDer Exit Frame-Node wechselt den Ausführungskontext vom aktuellen iframe zurück zu einem übergeordneten Dokument. Er wird verwendet, um einen iframe zu verlassen und weiterhin mit Elementen außerhalb davon zu interagieren.
Wann verwenden
- Interaktionen innerhalb eines iframes wurden abgeschlossen
- Sie müssen zur Hauptseite oder einem übergeordneten Frame zurückkehren
- Elemente außerhalb des iframes sind nach dem Wechsel in einen Frame nicht zugänglich
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Exit To | Definiert den Zielkontext, zu dem zurückgewechselt werden soll | Yes | top |
Exit To Optionen
| Option | Beschreibung |
|---|---|
parent | Wechselt eine Ebene nach oben vom aktuellen iframe |
top | Wechselt zurück zum Hauptdokument (Root-Ebene) |
Exit To Optionen
Top
Wechselt direkt zum Top-Level-Dokument unter Umgehung von verschachtelten iframes. Für die meisten Anwendungsfälle empfohlen.
Parent
Wechselt eine Ebene nach oben zum unmittelbaren übergeordneten Frame. Nützlich bei der Arbeit mit verschachtelten iframes.
Ausgabe
Keine Ausgabe.
Beispiel — Zum Hauptdokument verlassen
| Parameter | Wert |
|---|---|
| Exit To | top |
Best Practices
- Verlassen Sie den Frame nach Abschluss der iframe-Interaktionen immer
- Bevorzugen Sie
topbei der Arbeit mit verschachtelten iframes, um Verwirrung zu vermeiden - Fügen Sie nach dem Verlassen eine Validierung hinzu, um den korrekten Kontext zu bestätigen
- Vermeiden Sie unnötige Kontextwechsel
Mobile Press Key
MobileDer Mobile Press Key-Node simuliert das Drücken einer Hardware-Taste auf einem mobilen Gerät. Er wird verwendet, um systemseitige Aktionen wie das Zurücknavigieren, die Rückkehr zum Startbildschirm oder das Öffnen von Gerätemenüs auszulösen.
Wann verwenden
- In der App mit der Gerät-Zurück-Taste zurücknavigieren
- Zum Gerät-Startbildschirm zurückkehren
- Systemmenüs oder geräteseitige Steuerungen öffnen
- Mobilspezifisches Navigationsverhalten testen
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Key | Auf dem Gerät zu simulierende Hardware-Taste | Yes | BACK |
Verfügbare Tasten
| Option | Beschreibung |
|---|---|
BACK | Navigiert einen Schritt in der App zurück |
HOME | Kehrt zum Gerät-Startbildschirm zurück |
MENU | Öffnet das Geräte- oder App-Menü (sofern unterstützt) |
APP_SWITCH | Öffnet den App-Wechsler (Ansicht der zuletzt verwendeten Apps) |
ENTER | Bestätigt Eingaben oder löst Standardaktionen aus |
DELETE | Löscht Zeichen oder Inhalte |
VOLUME_UP | Erhöht die Gerätelautstärke |
VOLUME_DOWN | Verringert die Gerätelautstärke |
POWER | Simuliert das Drücken der Ein-/Aus-Taste |
Verhalten
- Sendet den ausgewählten Hardware-Tastenbefehl an das mobile Gerät
- Löst systemseitige Navigation oder Aktionen aus
- Erfordert kein UI-Element
- Das Verhalten kann je nach Gerät und Plattform (Android vs iOS) variieren
Ausgabe
Keine Ausgabe.
Beispiel — Zum vorherigen Bildschirm zurücknavigieren
| Parameter | Wert |
|---|---|
| Key | BACK |
Die BACK-Taste löst das native Navigationsverhalten des Geräts aus.
Best Practices
- Verwenden Sie BACK für realistische Navigation anstelle von UI-Schaltflächen, wenn angemessen
- Beachten Sie Unterschiede zwischen Android- und iOS-Verhalten
- Vermeiden Sie HOME, es sei denn, es ist ausdrücklich erforderlich (verlässt den App-Kontext)
- Kombinieren Sie mit Validierungsschritten, um das erwartete Navigationsergebnis zu bestätigen
Swipe
MobileDer Swipe-Node führt eine Wischgeste auf einem mobilen Gerät aus. Er wird verwendet, um Benutzerinteraktionen wie das Scrollen, das Navigieren zwischen Bildschirmen oder das Auslösen gestenbasierter Aktionen zu simulieren.
Wann verwenden
- Durch Inhalte auf mobilen Bildschirmen scrollen
- Zwischen Ansichten navigieren (z. B. Karussells, Tabs)
- Gestenbasiertes UI-Verhalten auslösen
- Mit Elementen interagieren, die Wischaktionen erfordern
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Direction | Vordefinierte Wischrichtung (up, down, left, right) | No | up |
| Start X | Start-X-Koordinate der Wischbewegung (Koordinatenmodus) | No | 100 |
| Start Y | Start-Y-Koordinate der Wischbewegung (Koordinatenmodus) | No | 600 |
| End X | End-X-Koordinate der Wischbewegung (Koordinatenmodus) | No | 100 |
| End Y | End-Y-Koordinate der Wischbewegung (Koordinatenmodus) | No | 100 |
| Duration | Dauer der Wischgeste in Millisekunden | No | 300 |
Swipe-Modi
Richtungsbasiert
Verwendet vordefinierte Richtungen (up, down, left, right). Berechnet die Swipe-Koordinaten automatisch. Für die meisten Anwendungsfälle empfohlen.
Koordinatenbasiert
Verwendet explizite Start- und Endkoordinaten. Ermöglicht präzise Steuerung für benutzerdefinierte Layouts, komplexe Gesten oder fein abgestimmte Interaktionen.
Ausgabe
Keine Ausgabe.
Beispiel — Richtungsbasierter Swipe
| Parameter | Wert |
|---|---|
| Direction | up |
| Duration | 300 |
Beispiel — Koordinatenbasierter Swipe
| Parameter | Wert |
|---|---|
| Start X | 100 |
| Start Y | 600 |
| End X | 100 |
| End Y | 100 |
| Duration | 300 |
Best Practices
- Bevorzugen Sie richtungsbasierte Swipes für Stabilität und Lesbarkeit
- Verwenden Sie Koordinaten nur wenn nötig
- Vermeiden Sie fest codierte Koordinaten über verschiedene Geräte hinweg — Bildschirmgrößen variieren
- Halten Sie die Swipe-Dauer realistisch (zu schnell oder langsam kann das Verhalten beeinflussen)
- Kombinieren Sie mit Assertions, um das erwartete Ergebnis zu überprüfen (z. B. Inhalt sichtbar)
Assert
AssertionsDer Assert-Node überprüft, ob ein UI-Element einer erwarteten Bedingung entspricht. Er wird verwendet, um das Anwendungsverhalten zu validieren und zu bestimmen, ob ein Test bestanden oder fehlgeschlagen ist.
Wann verwenden
- Überprüfen, ob ein Element sichtbar ist
- Prüfen, ob erwarteter Text oder Werte angezeigt werden
- Bestätigen, dass ein Bildschirm, Dialog oder Ergebnis erscheint
- Das Ergebnis einer vorherigen Aktion validieren
Konfiguration
| Parameter | Beschreibung | Erforderlich | Beispiel |
|---|---|---|---|
| Field | Zu prüfendes Ziel-UI-Element | Yes | LoginPage.errorMessage |
| Condition | Bedingung, die geprüft werden soll | Yes | visible |
| Expected Value | Wert für den Vergleich (bedingungsabhängig) | No | Invalid password |
| Bindings | Erlaubt dynamische Erwartungswerte aus Variablen oder Testdaten | No | ${expectedMessage} |
* Expected Value ist nur für Bedingungen erforderlich, die gegen einen Wert vergleichen.
Verhalten
- Wartet, bis das Zielelement oder die Bedingung ausgewertet werden kann
- Prüft die ausgewählte Bedingung gegen das Element
- Verwendet den erwarteten Wert, wenn die Bedingung einen Vergleich erfordert
- Lässt den Workflow fehlschlagen, wenn die Assertion nicht erfüllt wird
Ausgabe
Keine Ausgabe. Der Node trägt zum Testergebnis bei, indem er die Validierung als bestanden oder fehlgeschlagen markiert.
Beispiel — Überprüfen, ob Erfolgsmeldung nach Formularabsenden sichtbar ist
| Parameter | Wert |
|---|---|
| Field | PaymentPage.successMessage |
| Condition | visible |
| Expected Value | (leer) |
Best Practices
- Fügen Sie Assertions nach wichtigen Benutzeraktionen hinzu
- Bevorzugen Sie aussagekräftige geschäftliche Validierungen gegenüber rein technischen Prüfungen
- Verwenden Sie dynamische Erwartungswerte bei der Arbeit mit Testdaten
- Halten Sie Assertions fokussiert: eine Validierung pro Assert-Node
- Verwenden Sie Soft Verify, wenn Sie mehrere Validierungsfehler in einem Run sammeln möchten
Extract JSON Value
API TestingDer Extract JSON Value Node extrahiert einen Wert aus der letzten API-Antwort mittels Response Path oder JSONPath. Der extrahierte Wert wird als Workflow-Variable gespeichert und kann in späteren Workflow-Schritten wiederverwendet werden.
Wann verwenden
- Werte aus API-Responses extrahieren
- IDs für spätere Requests speichern
- Tokens oder Referenzen sichern
- Verschachtelte JSON-Strukturen lesen
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Store As | Variablen-Name für den extrahierten Wert | Yes | userId |
| Response Path / JSONPath | Pfad zum gewünschten Wert in der Response | Yes | $.data.id |
Verhalten
- Liest die letzte API-Response
- Führt den JSONPath aus
- Extrahiert den Wert
- Speichert den Wert als Variable
Ausgabe
Der extrahierte Wert wird über die durch Store As definierte Variable bereitgestellt. Beispiel: ${userId}
Fehlerbehandlung
- Fehler bei ungültigem JSONPath
- Fehler wenn kein Wert gefunden wird
Best Practices
- Sinnvolle Variablennamen verwenden
- Stabile JSONPaths bevorzugen
API Request
API TestingDer API Request Node sendet HTTP-Requests direkt innerhalb eines Test Workflows. Damit lassen sich Backend-APIs aufrufen, Testdaten vorbereiten und UI- mit API-Tests kombinieren.
Wann verwenden
- Backend APIs aufrufen
- Testdaten vorbereiten
- UI- und API-Tests kombinieren
- Dynamische Daten laden
Unterstützte Methoden
- GET
- POST
- PUT
- DELETE
- PATCH
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Method | HTTP-Methode | Yes | POST |
| URL | Ziel-Endpoint | Yes | https://api.example.com/users |
| Auth Type | Authentifizierungs-Modus | No | Bearer Token |
| Headers | HTTP-Header | No | Content-Type: application/json |
| Body | Request-Body (JSON) | No | {"name":"test"} |
| Response Alias | Name unter dem die Response gespeichert wird | No | createUserResponse |
Authentifizierung
Bearer Token
Token-basierte Authentifizierung.
Basic Auth
Benutzername / Passwort.
API Key
API-Key im Header oder Query.
OAuth2
OAuth2-Flow für sichere APIs.
Shared Config
Globale Auth-Konfiguration wiederverwenden.
Headers & Body
Verhalten
- Sendet den HTTP Request
- Löst Workflow-Variablen auf
- Speichert die Response
Ausgabe
Die Response wird unter dem konfigurierten Response Alias gespeichert und kann mit Extract JSON Value oder Verify Response weiterverarbeitet werden.
Fehlerbehandlung
- Fehler bei ungültiger URL
- Fehler bei ungültiger Authentifizierung
- Fehler bei fehlgeschlagenem Request
Best Practices
- Shared Config verwenden
- Responses validieren
- Keine Secrets hardcoden
Verify Response
API TestingDer Verify Response Node validiert die Response des vorherigen API Requests. Drei Match-Modi stehen zur Verfügung: partial, exact oder jsonPath.
Wann verwenden
- API Responses validieren
- Statuswerte prüfen
- JSON-Strukturen kontrollieren
- Backend-Prozesse absichern
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Match Mode | Validierungsmodus (partial / exact / jsonPath) | Yes | partial |
| Expected Body | Erwarteter Wert oder erwartete Struktur | Yes | {"status":"ok"} |
Match-Modi
partial
Prüft, ob die erwarteten Felder enthalten sind. Ideal für dynamische Responses.
exact
Strikte Übereinstimmung — die Response muss exakt dem Expected Body entsprechen.
jsonPath
Validierung über JSONPath-Ausdrücke. Ideal für grosse Responses.
Verhalten
- Liest die letzte API-Response
- Führt die Validierung aus
- Stoppt den Workflow bei Fehlern
Ausgabe
Kein direkter Output. Der Node validiert die Response und stoppt den Workflow bei Fehlschlag.
Fehlerbehandlung
- Fehler wenn keine Response existiert
- Fehler wenn die Validierung fehlschlägt
Best Practices
- partial für dynamische Responses verwenden
- exact nur für stabile Responses verwenden
- jsonPath für grosse Responses bevorzugen
If
Control FlowDer If-Node führt bedingte Logik in einen Test Workflow ein. Er wertet eine Bedingung aus und leitet den Workflow in verschiedene Zweige, je nachdem, ob die Bedingung erfüllt ist oder nicht.
Wann verwenden
- Schritte nur unter bestimmten Bedingungen ausführen
- Optionale UI-Elemente behandeln (z. B. Popups, Dialoge)
- Flexible und dynamische Workflows erstellen
- Fallback- oder alternative Abläufe implementieren
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Condition | Definiert, was ausgewertet werden soll | Yes | visible |
| Operator | Definiert, wie die Bedingung ausgewertet wird | Yes | equals |
| Compare Value | Wert für den Vergleich (falls erforderlich) | No | Success |
| Bindings | Erlaubt dynamische Werte über Variablen | No | ${expectedValue} |
* Compare Value ist nur für Bedingungen erforderlich, die Werte vergleichen.
Verfügbare Bedingungen
| Option | Description |
|---|---|
visible | Element ist auf dem Bildschirm sichtbar |
hidden | Element ist nicht sichtbar |
exists | Element existiert im DOM/UI |
notExists | Element existiert nicht |
textEquals | Elementtext stimmt exakt überein |
textContains | Elementtext enthält einen Wert |
valueEquals | Elementwert stimmt mit erwarteter Eingabe überein |
Verfügbare Operatoren
| Option | Beschreibung |
|---|---|
equals | Werte müssen exakt übereinstimmen |
notEquals | Werte müssen unterschiedlich sein |
contains | Wert muss die erwartete Eingabe enthalten |
greaterThan | Numerischer Vergleich: größer als |
lessThan | Numerischer Vergleich: kleiner als |
isEmpty | Wert ist leer |
isNotEmpty | Wert ist nicht leer |
Verhalten
- Wertet die definierte Bedingung zur Laufzeit aus
- Vergleicht das Ergebnis mit dem ausgewählten Operator
- Leitet die Ausführung in den True-Zweig (Bedingung erfüllt) oder False-Zweig (Bedingung nicht erfüllt)
- Nur der ausgewählte Zweig wird ausgeführt
Ausgabe
Keine Ausgabe. Der Node steuert den Workflow-Ausführungsfluss, indem er in den True- oder False-Zweig weiterleitet.
Beispiel — Eine optionale Fehlermeldung behandeln
Nur fortfahren, wenn keine Fehlermeldung angezeigt wird:
| Parameter | Value |
|---|---|
| Condition | notExists |
| Operator | equals |
True-Zweig: Workflow fortsetzen | False-Zweig: Fehler behandeln (z. B. Screenshot aufnehmen, Test stoppen)
Best Practices
- Verwenden Sie If für optionales oder dynamisches UI-Verhalten
- Halten Sie Bedingungen einfach und lesbar
- Vermeiden Sie tief verschachtelte If-Strukturen — sie sind schwer zu warten
- Kombinieren Sie mit Assert oder Soft Verify für Validierungslogik
- Verwenden Sie Variablen, um Bedingungen wiederverwendbar zu machen
Loop
Control FlowDer Loop-Node iteriert über einen Datensatz und führt eine Gruppe von Nodes wiederholt aus. Er wird verwendet, um mehrere Datensätze zu verarbeiten und so datengetriebenes Testen innerhalb eines einzelnen Test Workflows zu ermöglichen.
Wann verwenden
- Dieselben Schritte für mehrere Datensätze ausführen
- Tests mit verschiedenen Eingabewerten ausführen
- Über Datensätze iterieren (z. B. Benutzer, Bestellungen, Eingaben)
- Skalierbare und wiederverwendbare Testszenarien aufbauen
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Data Source | Zu iterierende Datensammlung | Yes | ${users} |
| Save As | Variablenname für das aktuelle Element in jeder Iteration | Yes | item |
| Max Iterations | Maximale Anzahl von Schleifendurchläufen | No | 100 |
| Bindings | Erlaubt dynamische Datenquellen und Variablennamen | No | ${dataSet} |
Behavior
- Liest die bereitgestellte Datenquelle
- Iteriert über jedes Element in der Sammlung
- Speichert das aktuelle Element in der in Save As definierten Variable
- Führt alle Nodes innerhalb der Schleife für jedes Element aus
- Stoppt, wenn alle Elemente verarbeitet sind oder das Limit der Max Iterations erreicht ist
Ausgabe
Keine direkte Ausgabe. Die Save As-Variable ist innerhalb der Schleife für jede Iteration verfügbar.
Beispiel — Mehrere Benutzer verarbeiten
| Parameter | Value |
|---|---|
| Data Source | ${users} |
| Save As | user |
| Max Iterations | 50 |
Innerhalb der Schleife: Type ${user.name} → Type ${user.email} → Click Submit
Best Practices
- Aussagekräftige Variablennamen verwenden (z. B. user, order, item)
- Iterationen bei großen Datensätzen begrenzen
- Mit Assertions kombinieren, um jede Iteration zu validieren
- Schleifenlogik einfach und lesbar halten
- Tief verschachtelte Schleifen vermeiden — sie sind schwer zu warten und zu debuggen
Wait
Control FlowDer Wait Node pausiert die Ausführung für eine definierte Zeitspanne. Er wird verwendet, um eine feste Verzögerung zwischen Schritten in einem Test Workflow einzufügen.
Wann verwenden
- Warten auf den Abschluss von Animationen oder Übergängen
- Umgang mit bekannten, festen Verzögerungen in der Anwendung
- Stabilisierung von Interaktionen in Randfällen, wenn keine bessere Bedingung verfügbar ist
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Duration | Wartezeit | Yes | 1000 |
| Unit | Zeiteinheit für die Dauer (ms oder s) | Yes | ms |
Verhalten
- Pausiert die Ausführung für die angegebene Dauer
- Prüft während der Wartezeit keine Bedingung
- Setzt die Ausführung nach Ablauf der Zeit fort
- Interagiert nicht mit dem Anwendungszustand
Ausgabe
Keine Ausgabe.
Wait 5000ms bevorzugen Sie Assert element is visible.
Beispiel — 1 Sekunde warten
| Parameter | Value |
|---|---|
| Duration | 1000 |
| Unit | ms |
Best Practices
- Wait nur verwenden, wenn keine bedingungsbasierte Alternative verfügbar ist
- Wartezeiten so kurz wie möglich halten
- Assert (z. B. visible) oder If-Bedingungen gegenüber Wait bevorzugen
- Wait für Animationen verwenden, nicht für Ladelogik
Time Gap
Control FlowDer Time Gap Node teilt einen Test Workflow in asynchrone Teile auf und setzt die Ausführung zu einem späteren Zeitpunkt fort.
Im Gegensatz zum normalen Wait Node bleibt die Workflow-Ausführung beim Time Gap Node nicht aktiv. Stattdessen wird der aktuelle Workflow-Teil abgeschlossen, persistiert und der nächste Teil separat eingeplant. Dadurch werden langlaufende und asynchrone Automatisierungsszenarien ermöglicht.
Wann verwenden
Verwende den Time Gap Node wenn:
- mehrere Minuten, Stunden oder Tage gewartet werden müssen
- asynchrone Backend-Prozesse verarbeitet werden
- auf externe Systeme gewartet werden muss
- mehrteilige Workflows erstellt werden
- verzögerte Business-Events validiert werden
- zukünftige Workflow-Fortsetzungen geplant werden
- Retry- oder Follow-up-Workflows benötigt werden
Typische Beispiele: Sendungsverfolgung nach Versand · Warten auf Zahlungsbestätigung · Verzögerte E-Mail-Verifizierung · Overnight-Processing · Langlaufende Business-Workflows.
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Wait Mode | Definiert ob Relative oder Absolute verwendet wird | Yes | Relative |
| Wait For | Dauer bis der nächste Workflow-Teil startet | Nur Relative | 1 |
| Unit | Zeiteinheit für die relative Verzögerung | Nur Relative | Minutes |
| Anchor Type | Definiert den Scheduling-Modus | Nur Absolute | Specific date & time |
| Date & Time (UTC) | Exakter UTC-Zeitpunkt für die Fortsetzung | Nur Absolute | 2026-03-01 12:00 |
| Continue on Failure | Plant den nächsten Teil auch bei Fehlern ein | No | Enabled |
Verhalten
Relative Mode
Der Relative Mode plant den nächsten Workflow-Teil nach einer definierten Dauer (z. B. nach 1 Minute, 2 Stunden oder 1 Tag).
- Der aktuelle Workflow-Teil wird abgeschlossen
- Der Workflow-Status wird persistiert
- Der nächste Teil wird nach der konfigurierten Dauer eingeplant
- Die Ausführung wird automatisch fortgesetzt
Absolute Mode
Der Absolute Mode plant die Fortsetzung zu einem fixen UTC-Datum und Zeitpunkt.
- Der aktuelle Workflow-Teil wird abgeschlossen
- Der Workflow-Status wird persistiert
- Der nächste Workflow-Teil wird an einen festen Zeitpunkt gebunden
- Die Ausführung wird automatisch zum definierten Zeitpunkt fortgesetzt
Workflow-Aufteilung
Der Time Gap Node teilt Workflows automatisch in mehrere Ausführungsteile auf. Jeder Workflow-Teil wird unabhängig ausgeführt.
Beispiel-Ablauf
- Part 1 → Bestellung erstellen
- Time Gap → 1 Stunde warten
- Part 2 → Sendungsverfolgung prüfen
Persistenter Runtime-Status
Da die Ausführung zwischen den Workflow-Teilen unterbrochen wird, persistiert die Plattform automatisch alle relevanten Workflow-Daten:
- Workflow-Variablen
- Extrahierte Werte
- Environment-Konfigurationen
- Runtime-Kontext
- Generierte IDs, Bestellnummern, API-Responses
- Session-Metadaten
Dadurch können spätere Workflow-Teile mit demselben Ausführungskontext weiterarbeiten.
Ausgabe
Kein direkter Output. Der Node plant die asynchrone Fortsetzung des Workflows.
Arbeiten mit Variablen
Variablen, welche vor dem Time Gap Node erstellt wurden, bleiben auch in späteren Workflow-Teilen verfügbar.
Beispiel
| Parameter | Value |
|---|---|
| Save Variable | ${orderNumber} |
- Part 1: Bestellung erstellen →
${orderNumber}speichern - Part 2:
${orderNumber}wiederverwenden → Sendung verfolgen
Fehlerbehandlung
- Der aktuelle Workflow-Teil wird vor dem Scheduling abgeschlossen
- Ungültige Scheduling-Konfigurationen können die Ausführung stoppen
- Absolute Scheduling benötigt gültige UTC-Zeitstempel
- Continue on Failure erlaubt die Fortsetzung trotz vorheriger Fehler
- Fehler bei der Workflow-Persistierung können die Fortsetzung verhindern
Beispiel — Relative Mode (1 Minute warten)
| Parameter | Value |
|---|---|
| Wait Mode | Relative |
| Wait For | 1 |
| Unit | Minutes |
Verhalten: Part 1 wird abgeschlossen, der Workflow pausiert asynchron, Part 2 startet nach 1 Minute.
Beispiel — Absolute Mode (fester Zeitpunkt)
| Parameter | Value |
|---|---|
| Wait Mode | Absolute |
| Anchor Type | Specific date & time |
| Date & Time (UTC) | 2026-03-01 12:00 |
Verhalten: Der Workflow wird exakt zum definierten UTC-Zeitpunkt fortgesetzt.
Best Practices
- Wichtige Runtime-Daten vor dem Time Gap persistieren
- Aussagekräftige Variablennamen verwenden
- Relative Mode für flexible Verzögerungen nutzen
- Absolute Mode für geplante Business-Events verwenden
- Asynchrone Workflows modular und lesbar halten
- Continue on Failure bewusst einsetzen
- Verzögerte Workflows nach Wiederaufnahme validieren
Acquire Test Data
Test DataDer Acquire Test Data Node ruft Testdaten aus einer konfigurierten Testdatenquelle ab und sperrt sie. Er ruft strukturierte Daten (z. B. Benutzer, Kunden, Bestellungen) ab und stellt sie zur Verwendung in einem Test Workflow bereit.
Wann verwenden
- Abruf von Testdaten aus einer zentralen Datenquelle
- Durchführung datengesteuerter Tests mit verwalteten Datensätzen
- Sicherstellung eindeutiger oder reservierter Daten für jede Testausführung
- Vermeidung von Konflikten zwischen parallelen Test-Läufen
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Source Type | Art der Datenquelle | Yes | rest-api |
| Data Type | Art des abzurufenden Datensatzes | Yes | CUSTOMER |
| Quantity | Anzahl der abzurufenden Datensätze | Yes | 1 |
| Scope | Legt fest, wie lange die Daten reserviert sind | Yes | RUN |
| TTL Override | Benutzerdefinierte Gültigkeitsdauer für die Datensperrung | No | PT30M |
| Store As | Variablenname für die abgerufenen Daten | Yes | acquiredToken |
| Bypass Cache | Erzwingt den erneuten Abruf frischer Daten unter Umgehung des Caches | No | false |
Behavior
- Fordert Daten von der konfigurierten Testdatenquelle an
- Sperrt die abgerufenen Datensätze, um eine Wiederverwendung in parallelen Ausführungen zu verhindern
- Speichert das Ergebnis in der definierten Variable
- Stellt die Daten für nachfolgende Schritte über Platzhalter wie
${"{"}acquiredToken.record.username{"}"}bereit
Output
Die abgerufenen Daten werden in der durch Store As definierten Variable gespeichert. Beispiel: ${acquiredToken.record.username} oder ${acquiredToken.records[0].email}
Beispiel — Kundendatensatz für einen Test-Lauf abrufen
| Parameter | Value |
|---|---|
| Source Type | rest-api |
| Data Type | CUSTOMER |
| Quantity | 1 |
| Scope | RUN |
| Store As | acquiredToken |
Verwendung in einem späteren Schritt: Type ${acquiredToken.record.email}
Best Practices
- Aussagekräftige Namen für gespeicherte Variablen verwenden (z. B. customerData, testUser)
- Menge so gering wie nötig halten, um Ressourcen zu schonen
- Scope = RUN für isolierte Testausführungen verwenden
- Mit Assertions kombinieren, um die Datennutzung zu validieren
Extract Text
Test DataDer Extract Text Node liest Text- oder Attributwerte aus einem UI-Element und speichert das Ergebnis in einer Variable. Wird verwendet, um dynamische Anwendungsdaten während der Testausführung für spätere Validierung, Vergleich oder Wiederverwendung zu erfassen.
Wann verwenden
- Werte aus der Benutzeroberfläche auslesen
- Dynamische Inhalte wie IDs, Meldungen oder Summen erfassen
- Angezeigte Werte später im Workflow vergleichen
- Anwendungsdaten für Assertions oder API-Aufrufe speichern
- Dynamische und datengesteuerte Testszenarien aufbauen
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Page | Page Object mit dem Zielelement | Yes | CheckoutPage |
| Element | UI-Element, aus dem Daten extrahiert werden | Yes | orderNumberLabel |
| Variable Name | Name der Variable zum Speichern des extrahierten Werts | Yes | orderNumber |
| Attribute | Eigenschaft oder Attribut des Elements, das ausgelesen wird | Yes | textContent |
Unterstützte Attribute
| Option | Description |
|---|---|
textContent | Sichtbarer Textinhalt des Elements |
value | Aktueller Wert eines Eingabefelds |
innerText | Dem Benutzer angezeigter gerenderter Text |
placeholder | Platzhaltertext eines Eingabefelds |
href | Ziel-URL eines Links |
src | Quell-URL eines Bild- oder Medienelements |
Behavior
- Wartet, bis das Zielelement verfügbar ist
- Liest das ausgewählte Attribut oder den Textwert aus dem Element
- Speichert den extrahierten Wert in der angegebenen Variable
- Stellt den Wert für alle nachfolgenden Workflow-Schritte bereit
Ausgabe
Der extrahierte Wert wird in der angegebenen Variable gespeichert und ist für alle nachfolgenden Workflow-Schritte verfügbar.
Beispiel — Bestellnummer von der Checkout-Seite extrahieren
| Parameter | Value |
|---|---|
| Page | CheckoutPage |
| Element | orderNumberLabel |
| Variable Name | orderNumber |
| Attribute | textContent |
Spätere Verwendung: Assert ${orderNumber} is not empty
Best Practices
- Aussagekräftige Variablennamen verwenden
- textContent für sichtbaren UI-Text bevorzugen
- Extrahierte Werte mit Assert oder If Nodes validieren
- Unbeabsichtigtes Überschreiben von Variablen vermeiden
- Extraktionslogik nah an der Verwendungsstelle des Werts platzieren
Persist Test Data
Test DataDer Persist Test Data Node speichert zuvor abgerufene Testdaten zur späteren Wiederverwendung in Workflow-Ausführungen oder asynchronen Verarbeitungsschritten. Wird verwendet, um gesperrte Datensätze über den aktuellen Ausführungskontext hinaus zu erhalten.
Wann verwenden
- Ein Workflow wird pausiert und später fortgesetzt
- Die Testausführung erstreckt sich über mehrere asynchrone Prozesse
- Abgerufene Datensätze bei Workflow-Neustarts erhalten
- Daten zwischen mehreren Ausführungsversuchen koordinieren
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Token Variable | Variable mit dem abgerufenen Datensatz-Token | Yes | acquiredToken |
| Run ID | Eindeutiger Bezeichner für die Workflow-Ausführung | Yes | ci-build-42 |
| Attempt ID | Bezeichner für den Ausführungsversuch | Yes | 1 |
Verhalten
- Liest das Datensatz-Token aus der angegebenen Variable
- Speichert den Datensatzverweis für den späteren Abruf
- Verknüpft die persistierten Daten mit einer bestimmten Run ID und Attempt ID
- Ermöglicht zukünftigen Workflow-Ausführungen, denselben Datensatz fortzusetzen
Ausgabe
Keine direkte Ausgabe. Der Datensatzverweis wird extern für zukünftige Workflow-Versuche gespeichert.
Beispiel — Kundendatensatz für einen CI-Pipeline-Lauf persistieren
| Parameter | Value |
|---|---|
| Token Variable | acquiredToken |
| Run ID | ci-build-42 |
| Attempt ID | 1 |
Verwenden Sie Resume Test Data mit derselben Run ID und Attempt ID, um den Datensatz später wiederherzustellen.
Best Practices
- Stabile und eindeutige Run IDs verwenden
- Nur Datensätze persistieren, die Workflow-Neustarts überstehen müssen
- Namenskonventionen über Workflows hinweg konsistent halten
- Mit Resume Test Data für Fortsetzungsszenarien kombinieren
Release Test Data
Test DataDer Release Test Data Node gibt einen zuvor abgerufenen oder wiederhergestellten Datensatz zurück an den Testdaten-Pool. Wird verwendet, um gesperrte Testdaten nach Abschluss eines Workflows oder wenn die Daten nicht mehr benötigt werden, wieder verfügbar zu machen.
Wann verwenden
- Ein Workflow hat die Verwendung der abgerufenen Testdaten abgeschlossen
- Ein zuvor gesperrter Datensatz soll an den Pool zurückgegeben werden
- Vermeidung unnötiger Datensperren nach der Ausführung
- Bereinigung der Testdatennutzung nach erfolgreichen oder fehlgeschlagenen Läufen
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Token Variable | Variable mit dem abgerufenen oder wiederhergestellten Datensatz-Token | Yes | acquiredToken |
| Scope | Scope, in dem der Datensatz freigegeben werden soll | Yes | RUN |
Scope-Optionen
| Option | Description |
|---|---|
RUN | Gibt den Datensatz für den aktuellen Workflow-Lauf frei |
PROJECT | Gibt den Datensatz im Rahmen des aktuellen Projekts frei |
TENANT | Gibt den Datensatz im gesamten Tenant-Scope frei |
Output
Keine Ausgabe. Die Datensatzsperre wird gemäß dem ausgewählten Scope aufgehoben oder freigegeben.
Beispiel — Kundendatensatz nach Abschluss des Workflows freigeben
| Parameter | Value |
|---|---|
| Token Variable | acquiredToken |
| Scope | RUN |
Best Practices
- Abgerufene Testdaten freigeben, sobald sie nicht mehr benötigt werden
- Dieselbe Token-Variable verwenden, die von Acquire Test Data oder Resume Test Data erstellt wurde
- RUN-Scope für die meisten Workflow-Ausführungen bevorzugen
- Diesen Node nahe am Ende des Workflows oder in einem Bereinigungszweig platzieren
Resume Test Data
Test DataDer Resume Test Data Node stellt zuvor persistierte Testdaten wieder her und macht sie innerhalb der aktuellen Workflow-Ausführung wieder verfügbar. Das Gegenstück zum Persist Test Data Node.
Wann verwenden
- Fortsetzen eines pausierten oder neu gestarteten Workflows
- Zuvor persistierte Datensätze wiederherstellen
- Asynchrone oder verteilte Testausführung fortsetzen
- Konsistente Testdaten über Wiederholungen oder CI/CD-Phasen hinweg beibehalten
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Run ID | Bezeichner der Workflow-Ausführung, aus der die Daten wiederhergestellt werden | Yes | ci-build-42 |
| Attempt ID | Bezeichner des persistierten Ausführungsversuchs | Yes | 1 |
| Store As | Variablenname, unter dem der wiederhergestellte Datensatz bereitgestellt wird | Yes | acquiredToken |
Verhalten
- Ruft den persistierten Datensatz anhand von Run ID und Attempt ID ab
- Stellt den Datensatzverweis im Workflow-Kontext wieder her
- Stellt die wiederhergestellten Daten über die in Store As definierte Variable bereit
- Die wiederhergestellte Variable verhält sich genau wie Daten aus Acquire Test Data
Ausgabe
Der wiederhergestellte Datensatz wird über die durch Store As definierte Variable bereitgestellt. Beispiel: ${acquiredToken.record.username}
Beispiel — Persistierten Kundendatensatz wiederherstellen
| Parameter | Value |
|---|---|
| Run ID | ci-build-42 |
| Attempt ID | 1 |
| Store As | acquiredToken |
Spätere Verwendung: Type ${acquiredToken.record.email}
Best Practices
- Stabile Run IDs über zusammenhängende Workflow-Ausführungen hinweg verwenden
- Attempt IDs für denselben asynchronen Ausführungsfluss konsistent halten
- Dieselbe Store As-Variablennamenskonvention im gesamten Workflow verwenden
- Mit Release Test Data kombinieren, um Datensatzsperren ordnungsgemäß zu bereinigen
HTTP Request
API & ScriptingDer HTTP Request Node sendet eine HTTP-Anfrage an einen externen Dienst oder API-Endpunkt. Wird verwendet, um Daten direkt über APIs im Rahmen eines Test Workflows abzurufen, zu erstellen, zu aktualisieren oder zu validieren.
Wann verwenden
- REST-APIs während eines Workflows aufrufen
- Testdaten vorbereiten oder bereinigen
- Backend-Antworten validieren
- UI- und API-Tests in einem einzigen Ablauf kombinieren
- Externe Systeme in automatisierte Tests integrieren
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Url | Ziel-API-Endpunkt | Yes | https://api.example.com/users |
| Method | HTTP-Methode der Anfrage | Yes | GET |
| Headers | Mit der Anfrage gesendete HTTP-Header | No | [{"Authorization":"Bearer token"}] |
| Body | An die API gesendeter Request-Payload | No | {"name":"John"} |
| Body Type | Format des Request-Body | No | json |
* Body ist in der Regel für POST-, PUT- oder PATCH-Anfragen erforderlich.
Unterstützte HTTP-Methoden
| Option | Description |
|---|---|
GET | Daten abrufen |
POST | Neue Daten erstellen |
PUT | Vorhandene Daten ersetzen |
PATCH | Vorhandene Daten teilweise aktualisieren |
DELETE | Daten entfernen |
Unterstützte Body-Typen
| Option | Description |
|---|---|
json | JSON-Payload |
form-data | Mehrteilige Formularübermittlung |
x-www-form-urlencoded | URL-kodierte Formulardaten |
text | Nur-Text-Payload |
Behavior
- Sendet die konfigurierte HTTP-Anfrage an den Ziel-Endpunkt
- Wendet Header- und Payload-Konfiguration an
- Wartet auf die API-Antwort
- Stellt die Antwort (Statuscode, Header, Body) für spätere Workflow-Schritte bereit
Unterstützte Methoden
GET, POST, PUT, PATCH, DELETE — sowie andere Standard-HTTP-Methoden, die von der aufgerufenen API unterstützt werden.
Ausgabe
Der Node stellt Zugriff auf die API-Antwort bereit, einschließlich Statuscode, Header und Response-Body. Antwortwerte können extrahiert und in nachfolgenden Workflow-Schritten wiederverwendet werden.
Beispiel — Kundendaten abrufen
| Parameter | Value |
|---|---|
| Url | https://api.example.com/customers/42 |
| Method | GET |
| Headers | [{"Authorization":"Bearer token"}] |
Beispiel — Testdaten über API erstellen
| Parameter | Value |
|---|---|
| Url | https://api.example.com/customers |
| Method | POST |
| Body | {"name":"John Doe"} |
| Body Type | json |
Best Practices
- Variablen und Bindings anstelle hartcodierter Werte verwenden
- Authentifizierungstoken sicher aufbewahren
- Wichtige Antworten mit Assert oder Extract Text validieren
- APIs für effizientes Testdaten-Setup statt nur UI-Vorbereitung verwenden
- Request-Payloads lesbar und wartbar halten
Execute JavaScript
API & ScriptingDer Execute JavaScript Node führt benutzerdefinierten JavaScript-Code direkt in der aktiven Browser-Sitzung aus. Wird für erweiterte Browser-Interaktionen, das Abrufen dynamischer Informationen, die Manipulation des Seitenverhaltens oder die Ausführung von Logik verwendet, die von Standard-Workflow-Nodes nicht abgedeckt wird.
Wann verwenden
- Direkte Zugriff auf Browser- oder DOM-Informationen
- Dynamische Anwendungsdaten abrufen
- Erweiterte UI-Interaktionen durchführen
- Benutzerdefinierte Logik im Browser-Kontext ausführen
- Randfälle behandeln, die von integrierten Nodes nicht unterstützt werden
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Script | Im Browser-Kontext ausgeführter JavaScript-Code | Yes | return document.title; |
| Store Result As | Variablenname zum Speichern des zurückgegebenen Ergebnisses | No | pageTitle |
Behavior
- Führt das bereitgestellte JavaScript in der aktiven Browser-Sitzung aus
- Läuft im Kontext der aktuell geladenen Seite
- Kann auf das DOM zugreifen, Browser-Informationen lesen und den Seitenzustand manipulieren
- Gibt das Ergebnis des Skripts zurück (falls zutreffend) und speichert es in der konfigurierten Variable
Ausgabe
Optionale Ausgabe. Wenn das Skript einen Wert zurückgibt und Store Result As konfiguriert ist, wird das Ergebnis in der angegebenen Variable gespeichert. Beispiel: ${pageTitle} → Customer Portal
Beispiel — Aktuellen Seitentitel abrufen
| Parameter | Value |
|---|---|
| Script | return document.title; |
| Store Result As | pageTitle |
Spätere Verwendung: Assert ${pageTitle} equals Dashboard
Beispiel — Elementtext auslesen
| Parameter | Value |
|---|---|
| Script | return document.querySelector('#total').textContent; |
| Store Result As | totalAmount |
Best Practices
- Skripte kurz und fokussiert halten
- Integrierte Nodes wann immer möglich bevorzugen
- Werte explizit mit
returnzurückgeben - Aussagekräftige Variablennamen für gespeicherte Ergebnisse verwenden
- Den Anwendungszustand nur wenn erforderlich verändern
- Ergebnisse mit Assert oder If Nodes validieren
Table Handling
Table HandlingDie Table Handling Nodes bieten einen vollständigen Satz geschäftsorientierter Operationen für die Interaktion mit Unternehmenstabellen in Ihren Test Workflows. Anstatt auf Zeilenpositionen oder technische Selektoren zu vertrauen, arbeiten sie mit Geschäftsspalten, Bedingungen und konfigurierten Tabellendefinitionen.
Cell Value
Table HandlingDer Cell Value Node liest, validiert oder speichert den Wert einer bestimmten Spalte aus einer Tabellenzeile. Wird verwendet, um während der Workflow-Ausführung dynamisch auf Geschäftsdaten aus Tabellen zuzugreifen.
Wann verwenden
- Werte aus einer Tabellenzeile auslesen
- Tabelleninhalt überprüfen
- Geschäftsdaten für spätere Workflow-Schritte extrahieren
- Mit durch Find Row identifizierten Zeilen arbeiten
- Status, Beträge, IDs oder andere tabellenbasierte Informationen validieren

Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| Action | Legt fest, was mit dem Zellwert geschehen soll | Yes | Read value |
| Match | Legt fest, wie mehrere Bedingungen ausgewertet werden | No | All conditions |
| Where | Bedingungen zur Identifikation der Zielzeile | No | Order Number equals ${orderNumber} |
| Column | Name der Geschäftsspalte, auf die zugegriffen wird | Yes | Status |
| Save As | Variablenname zum Speichern des Zellwerts | No | orderStatus |
* Where ist optional, wenn der aktuelle Zeilenkontext bereits vorhanden ist (z. B. nach Find Row). Save As ist erforderlich, wenn Werte gelesen und gespeichert werden.
Verfügbare Aktionen
| Option | Description |
|---|---|
Read value | Liest den Zellwert und speichert ihn als Variable |
Verify value | Validiert den Zellwert gegen eine erwartete Bedingung |
Read and verify | Liest und validiert den Wert in einem einzigen Schritt |
Zusätzliche Optionen
| Option | Description |
|---|---|
Search Scope | Legt fest, wo die Tabellensuche beginnen soll (z. B. Start from first page) |
Max Pages | Maximale Anzahl der zu durchsuchenden Seiten (Standard: 10) |
Timeout (ms) | Maximale Wartezeit für den Abschluss der Tabellensuche (Standard: 15000) |
Behavior
- Lokalisiert die Zielzeile über den aktuellen Tabellenzeilenkontext oder konfigurierte Bedingungen
- Wertet Bedingungen gegen die Tabellenzeilen aus
- Navigiert bei Bedarf über Tabellenseiten
- Greift auf die angegebene Geschäftsspalte zu und führt die konfigurierte Aktion aus (lesen, prüfen oder beides)
Ausgabe
Der Zellwert wird in der durch Save As definierten Variable gespeichert.
Beispiel — Status einer bestimmten Bestellung auslesen
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| Action | Read value |
| Where | Order Number equals ORD-100245 |
| Column | Status |
| Save As | orderStatus |
Best Practices
- Find Row vor Cell Value verwenden, wenn mit dynamischen Tabellen gearbeitet wird
- Nach stabilen Geschäftswerten suchen, nicht nach Zeilenposition
- Aussagekräftige Variablennamen wie orderStatus oder customerName verwenden
- Max Pages begrenzen, um langwierige Suchen zu vermeiden
- Wichtige Werte mit Assert oder If Nodes validieren
Check Table State
Table HandlingDer Check Table State Node überprüft den aktuellen Zustand einer Tabelle. Wird verwendet, um zu validieren, ob eine Tabelle sichtbar, ausgeblendet, leer, befüllt oder bereit für seitenabhängige Workflows ist.
Wann verwenden
- Überprüfen, ob eine Tabelle sichtbar ist, bevor mit ihr interagiert wird
- Prüfen, ob eine Tabelle Zeilen enthält
- Leere-Zustand-Szenarien kontrolliert behandeln
- Paginierungsverhalten validieren (hat nächste Seite, keine nächste Seite)
- Sicherstellen, dass tabellenabhängige Workflows sicher fortgesetzt werden können
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| State | Zu prüfender erwarteter Tabellenzustand | Yes | notEmpty |
Verfügbare Zustände
| Option | Description |
|---|---|
visible | Tabelle ist auf dem Bildschirm sichtbar |
hidden | Tabelle ist nicht sichtbar |
empty | Tabelle enthält keine Zeilen |
notEmpty | Tabelle enthält mindestens eine Zeile |
hasNextPage | Tabelle hat eine nächste Seite |
noNextPage | Tabelle hat keine nächste Seite |
Behavior
- Wartet auf den konfigurierten Tabellenzustand
- Wertet die ausgewählte Prüfung gegen die Tabelle aus
- Stoppt die Ausführung, wenn der erwartete Zustand innerhalb des Timeouts nicht erreicht wird
- Ändert weder den Tabelleninhalt noch die Zeilenauswahl
Ausgabe
Keine Ausgabe.
Beispiel — Vor der Suche prüfen, ob die Tabelle Daten enthält
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| State | notEmpty |
Diesen Node vor Find Row oder Click Row platzieren, um Fehler bei leeren Tabellen zu vermeiden.
Best Practices
- Diesen Node vor Paginierungs- oder Zeileninteraktionsschritten verwenden
- Tabellensichtbarkeit vor Find Row oder Cell Value validieren
- Leere-Zustand-Szenarien explizit behandeln
- Has next page vor Paginierungsschleifen und No next page zur Erkennung des Endes verwenden
Click Row
Table HandlingDer Click Row Node lokalisiert und klickt eine passende Geschäftszeile innerhalb einer konfigurierten Tabelle. Wird verwendet, um zeilenbasierte Aktionen auszulösen, wie das Öffnen von Detailansichten, das Auswählen von Datensätzen oder das Ausführen von Standard-Tabelleninteraktionen.
Wann verwenden
- Details für einen bestimmten Geschäftsdatensatz öffnen
- Eine Zeile in einer Tabelle auswählen
- Aktionen auf Zeilenebene auslösen
- Von einer Tabelle zu einer Detailseite navigieren
- Mit dynamischen Geschäftstabellen interagieren, ohne auf Zeilenindizes zu vertrauen
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| Match | Legt fest, wie mehrere Bedingungen ausgewertet werden | No | All conditions |
| Where | Bedingungen zur Identifikation der Zielzeile | Yes | Order Number equals ${orderNumber} |
| Search Scope | Legt fest, wo die Tabellensuche beginnen soll | No | Start from first page |
| Max Pages | Maximale Anzahl der zu durchsuchenden Seiten | No | 10 |
Verhalten
- Durchsucht die konfigurierte Tabelle nach einer passenden Geschäftszeile
- Wendet die konfigurierten Bedingungen an
- Navigiert bei Bedarf durch die Paginierung
- Bestimmt das technische Klickziel automatisch aus der Tabellendefinition
- Führt eine Klickaktion auf der passenden Zeile aus
Ausgabe
Keine Ausgabe.
Beispiel — Details einer bestimmten Bestellung öffnen
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| Where | Order Number equals ORD-100245 |
| Search Scope | Start from first page |
Best Practices
- Nach stabilen Geschäftsbezeichnern statt nach Zeilenposition suchen
- All conditions bei der Identifikation eindeutiger Datensätze verwenden
- Start from first page für deterministisches Verhalten bevorzugen
- Mit Check Table State vor komplexen Tabelleninteraktionen kombinieren
Filter Table
Table HandlingDer Filter Table Node wendet Filter in einer konfigurierten Tabelle an, durchsucht sie oder löscht Filter. Wird verwendet, um sichtbare Geschäftsdatensätze während der Workflow-Ausführung dynamisch einzugrenzen.
Wann verwenden
- Eine Tabelle nach Geschäftswerten filtern
- Tabelleninhalte durchsuchen
- Sichtbare Zeilen vor der Interaktion reduzieren
- Aktive Tabellenfilter löschen
- Tabellen für Find Row- oder Click Row-Operationen vorbereiten
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| Filter Mode | Legt die Art der Filteroperation fest | Yes | Column Filter |
| Column | Zu filternde Geschäftsspalte (Column Filter-Modus) | No | Status |
| Operator | Filtervergleichsoperator | No | contains |
| Value | Anzuwendender Filterwert | No | Active |
* Column, Operator und Value sind für den Column Filter-Modus erforderlich.
Filter-Modi
Column Filter
Wendet einen Filter auf eine bestimmte Geschäftsspalte mit einem Wert und Operator (equals, contains usw.) an.
Global Search
Führt eine globale Tabellensuche über alle Spalten hinweg aus.
Clear Filters
Entfernt alle aktiven Tabellenfilter und stellt den vollständigen Datensatz wieder her.
Ausgabe
Keine Ausgabe.
Beispiel — Bestellungstabelle nach Status filtern
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| Filter Mode | Column Filter |
| Column | Status |
| Operator | equals |
| Value | Active |
Best Practices
- Tabellen vor dem Suchen oder Klicken von Zeilen filtern
containsfür flexible Suchen bevorzugenequalsfür deterministische Validierungen verwenden- Filter vor dem Start nicht zusammenhängender Tabellenoperationen löschen
Find Row
Table HandlingDer Find Row Node durchsucht eine konfigurierte Tabelle und speichert eine passende Zeile als Variable. Wird verwendet, um eine bestimmte Tabellenzeile anhand einer oder mehrerer Geschäftsbedingungen zu finden.
Wann verwenden
- Eine bestimmte Zeile in einer Tabelle muss gefunden werden
- Ein späterer Schritt soll mit Zellen in dieser Zeile interagieren
- Tabelleninhalt anhand von Geschäftsdaten validieren
- Die Zeilenposition kann sich zwischen Ausführungen ändern
- Feste Zeilenindizes sollen vermieden werden
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| Match | Legt fest, wie mehrere Bedingungen ausgewertet werden | No | All conditions |
| Where | Bedingungen zur Identifikation der Zielzeile | Yes | Order Number equals ${orderNumber} |
| Save Row As | Variablenname zum Speichern der gefundenen Zeile | Yes | foundRow |
| Search Scope | Legt fest, wo die Tabellensuche beginnen soll | No | Start from first page |
| Max Pages | Maximale Anzahl der zu durchsuchenden Seiten | No | 10 |
Verhalten
- Verwendet die ausgewählte Tabellendefinition
- Wertet die konfigurierten Bedingungen gegen Tabellenzeilen aus
- Wählt die passende Zeile basierend auf der Find-Option aus (erste, letzte, erste sichtbare)
- Speichert den Zeilenverweis in der durch Save Row As definierten Variable
- Macht die Zeile für spätere tabellenbezogene Nodes verfügbar
Ausgabe
Die passende Zeile wird in der durch Save Row As definierten Variable gespeichert und kann in nachfolgenden Cell Value-, Click Row- oder Run Cell Action-Nodes verwendet werden.
Beispiel — Bestellzeile anhand der Bestellnummer finden
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| Where | Order Number equals ORD-100245 |
| Save Row As | targetOrder |
Best Practices
- Nach stabilen Geschäftswerten suchen, nicht nach Zeilenposition
- Klare Variablennamen wie orderRow, customerRow oder invoiceRow verwenden
- All conditions bei der Identifikation einer eindeutigen Zeile bevorzugen
- Mehrere Bedingungen verwenden, wenn ein einzelner Wert möglicherweise nicht eindeutig ist
- Nach dem Finden der Zeile einen Assert oder Soft Verify hinzufügen, um die erwarteten Daten zu bestätigen
Table Inspect
Table HandlingDer Table Inspect Node liest strukturelle und Laufzeitinformationen aus einer konfigurierten Tabelle. Wird verwendet, um Header, Spalten, Sortierung, Paginierung, Auswahlzustand und verfügbare Zeilenaktionen während der Workflow-Ausführung zu inspizieren.
Wann verwenden
- Tabellenstruktur dynamisch validieren
- Tabellenmetadaten lesen (aktuelle Seite, Gesamtseiten, Anzahl ausgewählter Elemente)
- Sortierungs- oder Paginierungszustand überprüfen
- Ausgewählte Zeilen inspizieren
- Fortgeschrittene oder adaptive Tabellen-Workflows erstellen
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| Mode | Legt fest, welche Tabelleninformationen inspiziert werden | Yes | Pagination |
| Store As | Variablenname zum Speichern des Inspektionsergebnisses | Yes | tableInfo |
Verfügbare Modi
| Option | Description |
|---|---|
Pagination | Liest den Paginierungszustand: aktuelle Seite, Gesamtseiten, hat nächste Seite |
Headers | Liest Spaltenheader-Informationen |
Columns | Liest konfigurierte Geschäftsspaltendefinitionen |
SelectedRows | Liest aktuell ausgewählte Zeilen |
RowActions | Liest verfügbare Zeilenaktionen aus der Tabellendefinition |
Behavior
- Liest Tabellenstrukturinformationen basierend auf dem ausgewählten Inspektionsmodus
- Ruft Laufzeit-Metadaten ab, wie aktuelle Seite, Gesamtseiten, ausgewählte Zeilen
- Speichert strukturierte Inspektionsergebnisse für die spätere Verwendung im Workflow
- Ändert keine Tabellendaten, wendet keine Filter an, klickt keine Zeilen an und ändert keine Paginierung
Ausgabe
Inspektionsergebnisse werden in der durch Store As definierten Variable gespeichert. Beispiel: ${tableInfo.currentPage}, ${tableInfo.totalPages}
Beispiel — Paginierungszustand vor einer Schleife inspizieren
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| Mode | Pagination |
| Store As | tableInfo |
Verwendung: If ${tableInfo.hasNextPage} equals true → navigate to next page
Best Practices
- Table Inspect vor fortgeschrittenen Tabelleninteraktionen verwenden
- Inspektionsergebnisse mit aussagekräftigen Variablennamen speichern
- Paginierungsinspektion vor Paginierungsschleifen verwenden
- Mit If Nodes für adaptive Workflows kombinieren
- Spaltenvalidierung verwenden, um Tabellenkonfigurationsänderungen früh zu erkennen
Load / Scroll Table
Table HandlingDer Load / Scroll Table Node lädt zusätzliche Zeilen oder steuert die Scroll-Position einer konfigurierten Tabelle. Wird für verzögert geladene, virtuelle, unendlich scrollende oder lange Tabellen verwendet, bei denen nicht alle Zeilen sofort verfügbar sind.
Wann verwenden
- Mit verzögert geladenen oder virtuellen Tabellen arbeiten
- Zusätzliche Zeilen laden, bevor Daten gesucht oder validiert werden
- An den Anfang oder das Ende einer Tabelle scrollen
- Eine passende Geschäftszeile in den sichtbaren Bereich bringen
- Tabellen ohne klassische Paginierung behandeln
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| Action | Legt die auszuführende Lade- oder Scroll-Operation fest | Yes | Load More Once |
| Where | Bedingungen zur Identifikation der Zeile, zu der gescrollt werden soll (nur Scroll to Matching Row) | No | Order Number equals ${orderNumber} |
Ladeoptionen
Load More Once
Lädt den nächsten Satz von Zeilen. Bietet präzise Kontrolle über jeden Ladeschritt.
Load All Rows
Lädt wiederholt Zeilen, bis die Tabelle keine weiteren Daten meldet.
Scroll to Top/Bottom
Scrollt den Tabellenanzeigebereich nach oben oder unten.
Scroll to Matching Row
Scrollt, bis eine passende Geschäftszeile sichtbar wird.
Ausgabe
Keine Ausgabe.
Beispiel — Alle Zeilen in einer virtuellen Tabelle laden
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| Action | Load All Rows |
Diesen Node vor Find Row oder Rows verwenden, um sicherzustellen, dass alle Daten verfügbar sind.
Best Practices
- Load more once für präzise Kontrolle über jeden Ladeschritt verwenden
- Load all rows nur bei überschaubarer Tabellengröße verwenden
- Scroll to matching row bevorzugen, wenn nach einem bekannten Geschäftsdatensatz gesucht wird
- Das Laden aller Zeilen bei sehr großen Datensätzen vermeiden, sofern nicht notwendig
- Mit Check Table State oder Find Row für zuverlässige Validierung kombinieren
Change Table Page
Table HandlingDer Change Table Page Node navigiert zwischen Seiten in einer paginierten Tabelle. Wird verwendet, um direkt durch die Tabellenpaginierung zu navigieren, anstatt auf automatische Tabellensuche zu vertrauen.
Wann verwenden
- Manuelles Navigieren durch paginierte Tabellen
- Zur nächsten oder vorherigen Tabellenseite wechseln
- Direkt zu einer bestimmten Seite springen
- Kontrollierte Paginierungs-Workflows erstellen
- In Schleifen durch Seiten iterieren
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| Action | Auszuführende Seitennavigationsaktion | Yes | Next Page |
| Page Number | Zielseitennummer (nur für Go To Page-Aktion) | No | 3 |
Verfügbare Seitenaktionen
Next Page
Navigiert zur nächsten Seite der Tabelle.
Previous Page
Navigiert zur vorherigen Seite der Tabelle.
First Page
Springt zur ersten Seite der Tabelle.
Go To Page
Springt direkt zu einer angegebenen Seitennummer.
Ausgabe
Keine Ausgabe.
Beispiel — Zur nächsten Seite navigieren
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| Action | Next Page |
Verwenden Sie Check Table State (hasNextPage) vor diesem Node, um Fehler auf der letzten Seite zu vermeiden.
Best Practices
- Check Table State vor dem Navigieren zur nächsten Seite verwenden
- Mit Loop Nodes für die Verarbeitung mehrerer Seiten kombinieren
- Go to page nur verwenden, wenn Seitennummern stabil und vorhersehbar sind
- Timeouts realistisch für die Tabellenladeperformance halten
Rows
Table HandlingDer Rows Node zählt, liest oder validiert Zeilen innerhalb einer konfigurierten Tabelle. Wird verwendet, um während der Workflow-Ausführung dynamisch mit sichtbaren, passenden, ausgewählten oder gesamten Zeilensätzen zu arbeiten.
Wann verwenden
- Zeilen in einer Tabelle zählen
- Passende Zeilen in ein Array einlesen
- Existenz von Zeilen validieren
- Zeilenanzahlen überprüfen
- Validierungen über mehrere Zeilen hinweg anwenden
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| Action | Legt fest, was mit den Zeilen geschehen soll | Yes | Count |
| What to Count | Legt fest, welche Zeilen gezählt werden | No | Visible rows |
| Match | Legt fest, wie mehrere Bedingungen ausgewertet werden | No | All conditions |
| Where | Bedingungen zur Identifikation passender Zeilen | No | Status equals Active |
| Save As | Variablenname zum Speichern des Ergebnisses | No | rowCount |
* Save As ist für die Aktionen Count und Read Matching Rows erforderlich.
Verfügbare Aktionen
Count
Zählt sichtbare, passende, ausgewählte oder gesamte Zeilen und speichert das Ergebnis.
Read Matching Rows
Liest alle passenden Zeilen in ein Array für die weitere Verarbeitung.
Verify Presence
Überprüft, ob mindestens eine passende Zeile existiert.
Verify All Rows
Überprüft, ob alle passenden Zeilen die konfigurierten Bedingungen erfüllen.
Ausgabe
Für Count- und Read Matching Rows-Aktionen wird das Ergebnis in der durch Save As definierten Variable gespeichert.
Beispiel — Aktive Bestellungen in der Tabelle zählen
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| Action | Count |
| Where | Status equals Active |
| Save As | activeCount |
Best Practices
- Aussagekräftige Save As-Variablennamen verwenden
- Geschäftsbedingungen gegenüber Zeilenpositionen bevorzugen
- Read matching rows für die erweiterte Zeilenverarbeitung verwenden
- Verify presence vor der Zeileninteraktion verwenden
- Mit Filter Table für große Datensätze kombinieren
Run Cell Action
Table HandlingDer Run Cell Action Node führt eine konfigurierte Aktion aus einer bestimmten Geschäftsspalte innerhalb einer passenden Tabellenzeile aus. Wird verwendet, um zeilenspezifische Aktionen auszulösen, wie das Öffnen von Details, Bearbeiten von Datensätzen, Herunterladen von Dateien oder Ausführen von Kontextmenüaktionen direkt aus einer Tabellenzelle.
Wann verwenden
- Aktionen aus Aktionsspalten auslösen
- Zeilenspezifische Schaltflächen oder Menüs anklicken
- Detail- oder Bearbeitungsdialoge öffnen
- Geschäftsaktionen innerhalb von Tabellen ausführen
- Mit dynamischen Zeilenaktionen interagieren, ohne auf technische Selektoren zu vertrauen
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| Column | Geschäftsspalte, die die Aktion enthält | Yes | Actions |
| Action Key | Schlüssel zur Identifikation der spezifischen auszuführenden Aktion | Yes | edit |
| Match | Legt fest, wie mehrere Bedingungen ausgewertet werden | No | All conditions |
| Where | Bedingungen zur Identifikation der Zielzeile | Yes | Order Number equals ${orderNumber} |
| Search Scope | Legt fest, wo die Tabellensuche beginnen soll | No | Start from first page |
| Max Pages | Maximale Anzahl der zu durchsuchenden Seiten | No | 10 |
Ausgabe
Keine Ausgabe.
Beispiel — Edit-Aktion einer bestimmten Bestellzeile anklicken
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| Column | Actions |
| Action Key | edit |
| Where | Order Number equals ORD-100245 |
Best Practices
- Stabile Geschäftsbedingungen zur Zeilenidentifikation verwenden
- All conditions für die eindeutige Zeilenidentifikation bevorzugen
- Aussagekräftige Action Keys in Tabellendefinitionen verwenden
- Start from first page für deterministische Workflows bevorzugen
- Mit Check Table State vor komplexen Tabellenaktionen kombinieren
Run Row Action
Table HandlingDer Run Row Action Node führt eine konfigurierte Aktion direkt auf einer passenden Tabellenzeile aus. Wird verwendet, um geschäftsspezifische Zeilenaktionen auszulösen, wie das Öffnen von Detailansichten, Bearbeiten von Datensätzen, Löschen von Einträgen oder Ausführen von workflowspezifischen Zeilenoperationen.
Wann verwenden
- Auf einer Tabellenzeile konfigurierte Aktionen ausführen
- Detailansichten oder Bearbeitungsdialoge öffnen
- Datensätze löschen
- Zeilenspezifische Workflows auslösen
- Mit dynamischen Geschäftstabellen arbeiten, ohne auf technische Selektoren zu vertrauen
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| Action Key | Schlüssel zur Identifikation der auszuführenden Zeilenaktion | Yes | delete |
| Match | Legt fest, wie mehrere Bedingungen ausgewertet werden | No | All conditions |
| Where | Bedingungen zur Identifikation der Zielzeile | Yes | Order Number equals ${orderNumber} |
| Search Scope | Legt fest, wo die Tabellensuche beginnen soll | No | Start from first page |
| Max Pages | Maximale Anzahl der zu durchsuchenden Seiten | No | 10 |
Ausgabe
Keine Ausgabe.
Beispiel — Stornierte Bestellzeile löschen
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| Action Key | delete |
| Where | Status equals Cancelled |
Best Practices
- Stabile Geschäftsbedingungen zur Zeilenidentifikation verwenden
- All conditions für die eindeutige Zeilenidentifikation bevorzugen
- Aussagekräftige Row Action Keys verwenden
- Start from first page für deterministische Workflows bevorzugen
- Max Pages realistisch halten, um langsame Ausführung zu vermeiden
Set Row Selection
Table HandlingDer Set Row Selection Node wählt Zeilen in einer konfigurierten Tabelle aus oder hebt die Auswahl auf. Wird verwendet, um den Zeilenauswahlzustand zu steuern, ohne technische Auswahldetails wie Checkboxen oder interne UI-Implementierungen offenzulegen.
Wann verwenden
- Geschäftsdatensätze in einer Tabelle auswählen
- Zeilen abwählen
- Massenauswahlen verwalten
- Zeilen für Batch-Operationen vorbereiten
- Mit Mehrfach- oder Einfachauswahl-Tabellen arbeiten
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| Action | Auszuführende Auswahloperaton | Yes | Select Matching |
| Match | Legt fest, wie mehrere Bedingungen ausgewertet werden | No | All conditions |
| Where | Bedingungen zur Identifikation der auszuwählenden Zeilen | No | Status equals Active |
| Max Pages | Maximale Anzahl der zu durchsuchenden Seiten | No | 10 |
Auswahlaktionen
Select Matching
Wählt Zeilen aus, die den konfigurierten Geschäftsbedingungen entsprechen.
Deselect Matching
Hebt die Auswahl von Zeilen auf, die den konfigurierten Geschäftsbedingungen entsprechen.
Select All Visible
Wählt alle aktuell sichtbaren Zeilen in der Tabelle aus.
Clear Selection
Hebt die Auswahl aller ausgewählten Zeilen in der Tabelle auf.
Ausgabe
Keine Ausgabe.
Beispiel — Alle aktiven Bestellzeilen auswählen
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| Action | Select Matching |
| Where | Status equals Active |
Best Practices
- Stabile Geschäftsbedingungen zur Zeilenidentifikation verwenden
- Alte Auswahlen vor neuen Massenoperationen ggf. löschen
- Mit Rows oder Table Inspect zur Validierung des Auswahlzustands kombinieren
- Max Pages realistisch halten, um langwierige Suchen zu vermeiden
Sort Table
Table HandlingDer Sort Table Node wendet Sortierung für eine Geschäftsspalte in einer konfigurierten Tabelle an oder hebt sie auf. Wird verwendet, um die Tabellensortierung dynamisch zu steuern, ohne auf technische Header-Selektoren oder manuelle UI-Klicks zu vertrauen.
Wann verwenden
- Tabellendaten nach einer Geschäftsspalte sortieren
- Tabellensortierung vor der Validierung ändern
- Deterministische Tabellenzustände vorbereiten
- Sortierte Datensätze überprüfen
- Aktive Sortierung einer Spalte entfernen
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| Column | Geschäftsspalte, nach der sortiert wird | Yes | Order Date |
| Direction | Anzuwendende Sortierungsrichtung | Yes | Descending |
Sortierungsrichtungen
Ascending
Sortiert die Spalte von niedrigsten zu höchsten Werten (A–Z, 0–9).
Descending
Sortiert die Spalte von höchsten zu niedrigsten Werten (Z–A, 9–0).
Clear Sorting
Entfernt die Sortierung der ausgewählten Geschäftsspalte.
Ausgabe
Keine Ausgabe.
Beispiel — Bestellungen nach Datum absteigend sortieren
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| Column | Order Date |
| Direction | Descending |
Best Practices
- Sortierung vor zeilenbasierter Validierung anwenden
- Stabile Geschäftsspalten für deterministische Workflows verwenden
- Sortierung löschen, wenn Workflows zu einem neutralen Tabellenzustand zurückkehren sollen
- Mit Rows oder Find Row für vorhersehbare Tabelleninteraktion kombinieren
Table Verify
Table HandlingDer Table Verify Node ist der zentrale Verifikationsnode für tabellenbasierte Workflows. Wird verwendet, um Tabellenzustand, Header, Spalten, Zeilen, Anzahlen, Sortierung, Auswahl, Zellwerte und konfigurierte Zeilenaktionen in einem einzigen einheitlichen Verifikationsnode zu validieren.
Wann verwenden
- Tabellensichtbarkeit oder leere Zustände überprüfen
- Tabellenstruktur validieren (Header, Spalten)
- Zeilenanzahlen oder Zeilenexistenz überprüfen
- Zellwerte validieren
- Sortierungsverhalten prüfen
- Ausgewählte Zeilen und konfigurierte Zeilenaktionen validieren
Configuration
| Parameter | Description | Required | Example |
|---|---|---|---|
| Table | Zentral verwaltete Tabellendefinition | Yes | OrdersTable |
| Verification Type | Legt fest, welcher Aspekt der Tabelle verifiziert wird | Yes | Row Count |
| Match | Legt fest, wie mehrere Bedingungen ausgewertet werden | No | All conditions |
| Where | Bedingungen zur Identifikation von Zeilen (wo anwendbar) | No | Status equals Active |
| Expected Value | Erwarteter Wert für den Vergleich (wo anwendbar) | No | 5 |
* Expected Value is required for value comparison verifications.
Verification Types
Table State
Verify visibility, emptiness, or pagination state (has/no next page).
Column / Header
Verify that a specific business column or header exists in the table.
Row Count / Presence
Verify the number of rows or that a matching row exists.
Cell Value
Verify the value of a specific cell in a matching row.
Sorting
Verify that the table is sorted by a specific column and direction.
Row Action
Verify that a configured action exists on a matching row.
Behavior
- Automatically uses table definitions, business columns, configured row actions, and pagination handling
- Verification failures stop the workflow unless Soft Verify is enabled
Output
No output. Verification failures stop the workflow unless Soft Verify is enabled.
Example — Verify the status of a specific order row
| Parameter | Value |
|---|---|
| Table | OrdersTable |
| Verification Type | Cell Value |
| Column | Status |
| Where | Order Number equals ORD-100245 |
| Expected Value | Delivered |
Best Practices
- Use business conditions instead of row indexes
- Prefer centralized table verification over custom assertions
- Verify table state before row interaction
- Use explicit sorting verification in deterministic workflows
- Validate pagination behavior in large datasets
- Keep verification focused and readable