Dinoer

Administrer une interface web de bout en bout

Piloter une interface derrière une connexion, en plusieurs étapes : ce qui la fait fonctionner avec Dinoer, et où cela s'arrête.

Ce n’est pas la tâche pour laquelle Dinoer est construit, mais son cœur de navigation sait toujours la faire : rpa.py pilote une interface derrière une connexion, en plusieurs étapes, comme le ferait une personne. Servez-vous-en quand la tâche relève de la configuration plutôt que de la recherche.

Derrière une demande HTTP Basic

Une cible protégée par l’authentification HTTP Basic d’un serveur mandataire, en plus de la page de connexion de l’application :

{"http_credentials": true, "url": "https://target.local/admin", "actions": [...]}

Le scénario ne nomme toujours aucun secret : http_credentials indique à Dinoer de lire http_username et http_password dans le fichier d’identifiants et de les transmettre au navigateur pour la seule origine de la cible.

Ce qui fait fonctionner ce cas

Un seul appel pour tout ce qui dépend de l’état de la page. Connexion, action, vérification, en un seul appel. Réparti sur plusieurs appels, l’état de la page se perd sans avertissement : une session enregistrée ne contient que les cookies et le stockage local, jamais ce qui était ouvert à l’écran.

Une vérification en tête. Si la page n’est pas celle attendue, arrêtez avant de rien saisir :

{"type": "evaluer", "script": "document.title", "contient": "Sign in"}

Le répertoire chiffré pour chaque identifiant.

{"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"}

Le scénario peut être committé, car il nomme des clés, jamais des valeurs.

Des signaux lus, pas seulement le verdict. Après chaque étape : où vous êtes réellement (boussole.url_courante), ce qu’a répondu le serveur (boussole.dernier_code_http), si la session est connectée (auth_status, avec auth_indicator).

Où cela s’arrête

Les opérations qui durent plusieurs minutes s’y prêtent mal : le cœur de navigation renvoie une réponse finale, pas un flux, et un délai dépassé ne veut pas dire un échec, puisque le serveur continue de travailler après que le client a cessé d’attendre. Modifier des données sur de nombreux sites indépendants n’est pas la fonction de Dinoer ; passez par l’API de la cible si elle en a une. Et rien ici ne s’annule : Dinoer exécute la liste que vous avez écrite, à la vitesse de la machine.

Recettes → · Limites →