Administrar una interfaz web de principio a fin
Manejar una interfaz tras un inicio de sesión, en varios pasos: qué hace que funcione con Dinoer, y dónde se detiene.
No es la tarea para la que se construyó Dinoer, pero su núcleo de navegación
sigue sabiendo hacerla: rpa.py maneja una interfaz tras un inicio de sesión,
en varios pasos, como lo haría una persona. Úselo cuando la tarea sea de
configuración y no de investigación.
Tras una petición HTTP Basic
Un objetivo protegido por la autenticación HTTP Basic de un proxy, además de la página de inicio de sesión de la aplicación:
{"http_credentials": true, "url": "https://target.local/admin", "actions": [...]}
El escenario sigue sin nombrar ningún secreto: http_credentials indica a
Dinoer que lea http_username y http_password del archivo de credenciales y
que se los dé al navegador solo para el origen del objetivo.
Qué hace que este caso funcione
Una sola llamada para todo lo que depende del estado de la página. Iniciar sesión, actuar, comprobar, en una sola llamada. Repartido en varias llamadas, el estado de la página se pierde sin aviso: una sesión guardada solo contiene cookies y almacenamiento local, nunca lo que estaba abierto en pantalla.
Una comprobación al principio. Si la página no es la esperada, deténgase antes de escribir nada:
{"type": "evaluer", "script": "document.title", "contient": "Sign in"}
El directorio cifrado para cada credencial.
{"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"}
Se puede hacer commit del escenario, porque nombra claves, nunca valores.
Señales leídas, no solo el veredicto. Tras cada paso: dónde está de
verdad (boussole.url_courante), qué respondió el servidor
(boussole.dernier_code_http), si la sesión está iniciada (auth_status, con
auth_indicator).
Dónde se detiene
Las operaciones que duran minutos encajan mal: el núcleo de navegación devuelve una respuesta final, no un flujo, y un tiempo agotado no significa un fallo, porque el servidor sigue trabajando después de que el cliente deje de esperar. Modificar datos en muchos sitios independientes no es para lo que se construyó Dinoer; use la API del objetivo si tiene una. Y aquí nada se puede deshacer: Dinoer ejecuta la lista que usted escribió, a velocidad de máquina.