La operación dura varios minutos, y no ve nada hasta que termina
Un clon, una importación, una actualización masiva. Diwall captura al final — así que un fallo a los treinta segundos le cuesta toda la espera. Cómo obtener vistas intermedias, y por qué un tiempo agotado no es un fallo.
El síntoma. Lanza algo lento — el clonado de un sitio, una importación, una actualización masiva — y espera. Diwall captura una vez, al final. Mientras tanto la interfaz quizá muestra un indicador de carga, una barra de progreso, registros en directo: usted no ve nada de eso.
Si la operación falla a los treinta segundos, se entera tres minutos después. Y cada iteración de su escenario vuelve a costar la duración completa.
Por qué funciona así
Diwall trabaja con una invocación y una captura final. Es una observación al término, no un flujo — eso es lo que hace reproducible una ejecución y su salida un único JSON legible. El precio de esa decisión es exactamente esta situación.
Capturar por el camino
interval_capture toma una captura cada N segundos durante una espera. Es un
parámetro por acción, disponible en attendre, pause y
attendre_navigation:
{"type": "attendre", "selecteur": ".clone-done", "interval_capture": 10}
Las capturas intermedias llegan a stream_captures[] en la salida JSON. Sigue
esperando la ejecución entera, pero después tiene una sucesión de fotogramas en
lugar de uno solo — suficiente para ver dónde se rompió y no solo que se
rompió.
--interval-capture N en la línea de comandos fija un valor por defecto para
toda acción que lo admita; el valor de la acción prevalece.
Esperar una señal, no una duración
No use
pausepara esperar a que termine una operación.
Una pausa fija no se adapta. Póngala en diez segundos: una operación que tarda quince le da una captura caducada de un trabajo todavía en marcha; una que tarda dos malgasta ocho segundos en cada iteración. Los dos fallos son silenciosos.
[
{"type": "cliquer_som", "id": 7},
{"type": "attendre_absence", "selecteur": ".spinner"},
{"type": "attendre_selecteur_present", "selecteur": ".result-container"},
{"type": "capturer", "nom": "result"}
]
Espere a que desaparezca el indicador, y luego a que llegue el resultado. El
escenario dura ahora exactamente lo que dura la operación — ni más ni menos.
Reserve pause para lo que sabe hacer: un retraso deliberado, no una apuesta
sobre una duración.
Dos tiempos de espera, y no son el mismo
| Opción | Qué cubre | Por defecto |
|---|---|---|
--timeout | cada operación de Playwright | 10 000 ms |
--screenshot-timeout | la propia captura | 120 000 ms |
Una operación larga suele requerir subir el primero. Subir el segundo solo ayuda cuando es la captura la que agota el tiempo — una página muy alta, un renderizado pesado.
diwall-rpa --scenario clone.json --timeout 300000 --guide-version 1.3
Un tiempo agotado no es un fallo — compruebe antes de reintentar
Un envío que agota el tiempo puede haber funcionado. El servidor no deja de trabajar porque el cliente haya dejado de esperar.
Observado de verdad: un clonado lanzado por un POST clásico, sin AJAX, de modo
que la petición HTTP siguió abierta hasta que el servidor terminó. El clic acabó
en TimeoutError a los veinte segundos. El clonado ya se había lanzado y se
completó — se supo por las malas, al relanzar la operación «como es debido» con
un tiempo generoso y obtener un segundo clon idéntico.
Así que antes de reintentar una operación larga que modifica algo: vaya a mirar
el destino. Un TimeoutError en un clic significa que Playwright dejó de
esperar, nada más.
En resumen
interval_capturele da una sucesión de fotogramas en lugar de uno final.- Espere una señal del DOM, nunca una duración fija.
--timeoutvale por operación;--screenshot-timeout, solo para la captura.- No reintente nunca una acción lenta que modifica algo sin mirar antes el destino — podría estar haciéndola dos veces.