Diwall

Español
Descargar 1.24.4

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 pause para 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ónQué cubrePor defecto
--timeoutcada operación de Playwright10 000 ms
--screenshot-timeoutla propia captura120 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_capture le da una sucesión de fotogramas en lugar de uno final.
  • Espere una señal del DOM, nunca una duración fija.
  • --timeout vale 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.