Ein Szenario schreiben
Eine JSON-Datei, eine Liste von Aktionen, einundzwanzig Verben. Wie man eines schreibt, das nächsten Monat noch funktioniert, und die zwei Gewohnheiten, die darüber entscheiden.
Ein Szenario ist eine JSON-Datei: wohin, und was dort zu tun ist. Es ist die Arbeitseinheit von Diwall – Sie werden welche schreiben, wiederverwenden und unter Versionskontrolle stellen.
{
"nom": "check-dashboard",
"url": "https://target.local/login",
"actions": [
{"type": "remplir_som", "id": 2, "valeur": "depuis_secrets", "secret_cle": "username"},
{"type": "remplir_som", "id": 3, "valeur": "depuis_secrets", "secret_cle": "password"},
{"type": "cliquer_som", "id": 5},
{"type": "attendre_selecteur_present", "selecteur": ".user-menu"}
]
}
Zwei Felder sind Pflicht: url und actions. Alles andere ist optional, und
die Datei wird geprüft, bevor ein Browser startet – ein Tippfehler in einem
Schlüsselnamen bricht den Lauf sofort ab, nicht erst auf halbem Weg.
Zuerst hinsehen
Für eine Seite, die Sie nicht gelesen haben, können Sie keine Aktionen schreiben. Nehmen Sie sie zuerst auf:
diwall-shot --url https://target.local/login --som --a11y --guide-version 1.3
elements_som liefert die Nummern, a11y_tree die Selektoren und die
Struktur. Schreiben Sie das Szenario aus dieser Ausgabe heraus, nicht aus der
Erinnerung daran, wie die Seite vermutlich aussieht.
Die einundzwanzig Verben
| Familie | Aktionen |
|---|---|
| Handeln | cliquer, cliquer_som, cliquer_visuel, remplir, remplir_som, defiler |
| In einem Rahmen | cliquer_iframe, remplir_iframe |
| Navigieren | naviguer |
| Warten | attendre, attendre_absence, attendre_selecteur_present, attendre_navigation, attendre_url, attendre_reseau_calme, pause |
| Beobachten | capturer, evaluer |
| Zusammensetzen | declencher_scenario, nettoyer_overlay, attendre_mfa_ntfy |
Die _som-Varianten nehmen eine Nummer aus der Aufnahme, die einfachen einen
CSS-Selektor. Nehmen Sie Nummern, wenn die Seite stabil ist, und Selektoren,
wenn Sie ein eindeutiges Merkmal haben.
Die Parameter jedes Verbs, Pflicht und optional, stehen in der Schnellreferenz.
Erste Gewohnheit – auf ein Signal warten, nie auf eine Dauer
Eine
pauseist eine Wette darauf, wie lange etwas dauert. Sie werden sie verlieren, in beide Richtungen.
{"type": "cliquer_som", "id": 7},
{"type": "attendre_absence", "selecteur": ".spinner"},
{"type": "attendre_selecteur_present", "selecteur": ".result"}
Stellen Sie eine Pause von zehn Sekunden ein: Ein Vorgang, der fünfzehn braucht, liefert Ihnen die Aufnahme einer noch laufenden Arbeit – Erfolg gemeldet, nichts geprüft. Einer, der zwei braucht, verschwendet bei jedem einzelnen Lauf acht Sekunden.
Wer auf ein DOM-Signal wartet, lässt das Szenario genau so lange dauern wie die
Arbeit selbst. Behalten Sie pause für eine gewollte Verzögerung, nicht für
eine Schätzung.
Zweite Gewohnheit – prüfen, bevor Sie handeln
Setzen Sie eine Prüfung an den Anfang. Ist die Seite nicht die erwartete, hält das Szenario an, bevor irgendwo irgendetwas eingetippt wird:
{"type": "evaluer", "script": "document.title", "contient": "Sign in"}
Das kostet nichts, und es ist das, was zwischen einer unbemerkten Weiterleitung und einem Passwort im Formular eines Fremden steht. Das mit Diwall ausgelieferte Anmeldeszenario beginnt genau so.
auth_indicator tut dasselbe auf Dateiebene – ein Selektor, der nur nach der
Anmeldung existiert, automatisch geprüft:
{"auth_indicator": ".user-menu", "url": "…", "actions": [...]}
Optionen, die die Datei selbst mitführen kann
Manche Optionen gehören zum Ziel, nicht zu der Person, die das Szenario startet. Schreiben Sie sie in die Datei, damit sie für sich allein steht:
| Eigenschaft | Wofür |
|---|---|
wait_until | ein Ziel, das nie Netzwerkstille erreicht |
shadow_dom | Komponenten in offenen Shadow Roots |
som_brut | auf die hybride Set-of-Mark-Auflösung verzichten, zurück zur reinen Neuindizierung (selten nötig – die hybride Voreinstellung meldet Abweichungen bereits) |
http_credentials | HTTP-Basic-Authentifizierung |
intention | ein Satz, der im Operationsjournal festgehalten wird |
Wer Ihr Szenario wiederverwendet, muss dann die Eigenheiten des Ziels nicht kennen.
Nie Zugangsdaten hineinschreiben
{"type": "remplir_som", "id": 3,
"valeur": "depuis_secrets", "secret_cle": "password"}
Das Szenario nennt einen Schlüssel; das verschlüsselte Verzeichnis hält den Wert. Deshalb kann ein Szenario gefahrlos committet werden, und die Veröffentlichungsprüfung lehnt jede Veröffentlichung ab, in der sie ein Passwort im Klartext in einem Szenario findet.
Kurz gesagt
- Zuerst die Seite aufnehmen; das Szenario aus der Ausgabe schreiben.
urlundactionssind Pflicht – alles andere ist optional.- Auf Signale warten, nicht auf Zeitspannen.
- Die Seite prüfen, bevor man auf ihr handelt.
- Zielspezifische Optionen in die Datei schreiben, damit sie für sich allein reist.
- Zugangsdaten sind immer ein
secret_cle, nie ein Wert.