Galerie de scénarios
Les quatre scénarios d'exemple livrés avec Dinoer : ce que fait chacun, la commande, et la sortie d'une exécution réelle du 14 août 2026.
Un scénario est un fichier JSON : une adresse de départ et une liste d’actions, dans l’ordre. C’est l’unité de travail du cœur de navigation.
Ces quatre-là sont livrés dans scenarios/. Les trois premiers fonctionnent
sur une installation neuve, sans configuration ; le quatrième demande un
répertoire chiffré.
1 · Lire sans rien modifier
scenarios/exemples/sondage_fast.json attend la page, puis lit son titre.
Rien ne change sur la cible.
{"url": "https://example.com",
"actions": [
{"type": "attendre_selecteur_present", "selecteur": "body"},
{"type": "evaluer", "script": "document.title"}]}
/opt/dinoer/venv/bin/python3 /opt/dinoer/rpa.py \
--scenario scenarios/exemples/sondage_fast.json --guide-version 1.6
{"succes": true, "http_status": 200,
"evaluations": [{"script": "document.title", "valeur": "Example Domain"}],
"respect": {"actions_executees": 2, "duree_totale_ms": 2762}}
Deux actions, 2,8 secondes. La forme à utiliser quand il suffit de savoir ce que dit une page.
2 · Relever une page avant de la modifier
scenarios/diagnostic_dom.json liste les boutons et les champs d’une page,
détecte si React, Vue ou Angular y tournent et cherche des racines shadow, sans
rien modifier. Écrivez un scénario qui agit sur la page à partir de sa sortie,
pas de mémoire.
/opt/dinoer/venv/bin/python3 /opt/dinoer/rpa.py \
--scenario scenarios/diagnostic_dom.json --guide-version 1.6
{"succes": true, "http_status": 200,
"evaluations": [
{"script": "…querySelectorAll('button')…", "valeur": "[]"},
{"script": "…React/Vue/Angular…",
"valeur": "{\"React\":false,\"Vue\":false,\"Angular\":false}"}],
"respect": {"actions_executees": 6, "duree_totale_ms": 5933}}
Les listes sont vides parce que example.com n’a ni bouton ni champ. Sur une
vraie cible, elles donnent les sélecteurs et les attributs du scénario suivant.
3 · Diagnostiquer une page qui dysfonctionne
scenarios/exemples/depannage_local.json a les mêmes actions que le premier
scénario, dans un autre but : dirigez-le vers une interface en cours de
développement (--url remplace l’adresse du fichier) et lisez erreurs_js et
erreurs_console, présents dans chaque réponse et vides quand rien n’a
échoué. Une page blanche derrière laquelle se cache une erreur HTTP 500
silencieuse ressemble à une session expirée ; la console fait la différence.
/opt/dinoer/venv/bin/python3 /opt/dinoer/rpa.py \
--scenario scenarios/exemples/depannage_local.json \
--url http://localhost:8000/ --guide-version 1.6
4 · Se connecter depuis le répertoire chiffré
scenarios/exemples/rpa_securise.json demande un répertoire chiffré monté et
configuré : aucune sortie n’est donc montrée ici.
{"auth_indicator": ".user-menu",
"url": "https://example.com/login",
"actions": [
{"type": "evaluer", "script": "document.title", "contient": "Example"},
{"type": "remplir", "selecteur": "input[name=\"username\"]",
"valeur": "depuis_secrets", "secret_cle": "username"},
{"type": "remplir", "selecteur": "input[name=\"password\"]",
"valeur": "depuis_secrets", "secret_cle": "password"},
{"type": "cliquer", "selecteur": "button[type=\"submit\"]"},
{"type": "attendre_selecteur_present", "selecteur": ".user-menu"}]}
"valeur": "depuis_secrets" signifie que le mot de passe est lu dans le
processus du navigateur, jamais dans votre shell. La première action est une
vérification : si le titre de la page ne contient pas « Example », le scénario
s’arrête avant de rien saisir.
Vos propres scénarios
Écrivez-les à partir d’une page que vous avez d’abord lue. Écrire un scénario →