Dinoer

La página nunca termina de cargar, sea cual sea el tiempo de espera

Diez segundos fallan. Cuarenta y cinco segundos fallan igual. El objetivo no es lento: nunca termina, y ningún tiempo de espera lo cambiará.

El síntoma. TimeoutError en la primera navegación. Sube --timeout de 10 s a 45 s y vuelve a fallar, exactamente igual.

Ese fallo idéntico es el diagnóstico: el problema no es la duración.

Qué espera Dinoer

Por defecto, la primera navegación termina en networkidle: 500 ms sin tráfico de red. Es un buen valor por defecto, porque significa que la página se ha estabilizado de verdad: los scripts se han ejecutado y el contenido ha llegado.

Algunos objetivos nunca se calman. Un panel que actualiza sus contadores, unas estadísticas en directo, la página de administración de un router que consulta su propio estado: usan la red sin parar, por diseño. No hay ningún momento de calma que esperar, así que Dinoer espera hasta agotar el tiempo, cada vez, sea cual sea su duración.

Cambiar la condición, no la duración

/opt/dinoer/venv/bin/python3 /opt/dinoer/shot.py \
  --url http://target.local/ --wait-until load --a11y \
  --guide-version 1.6

--wait-until load termina cuando se dispara el evento load de la página, sin exigir silencio de red. La misma opción existe en rpa.py. Solo afecta a la primera navegación, no a las acciones naviguer, y los escalados que lanza campagne.py conservan el valor por defecto.

Un escenario puede llevarla como propiedad raíz, para que quien lo reutilice no tenga que conocer la particularidad del objetivo:

{"url": "http://target.local/", "wait_until": "load", "actions": [...]}

La línea de comandos prevalece sobre el escenario Esta opción lleva un valor, y dos valores no se pueden combinar. Si se indican los dos, decide la opción de la línea de comandos.

Qué valor usar

ValorTermina conÚselo cuando
networkidle500 ms sin tráfico de redpor defecto: consérvelo salvo que falle
loadel evento load de la páginael objetivo consulta el servidor sin parar
domcontentloadedel HTML analizado, el resto de recursos aún cargandonecesita la vista más temprana posible

No cambie a load por adelantado. El valor por defecto le da una página que ha terminado de llegar; cambiarlo supone aceptar que parte del contenido siga cargando cuando se produce la respuesta. Cámbielo cuando el valor por defecto falle.

Cómo distinguirla de una página lenta

Una página lenta funciona si se espera lo suficiente: aumentar el tiempo de espera cambia el resultado. Una página que nunca se calma falla igual con cualquier duración.

La prueba cuesta poco: ejecútela una vez con el tiempo por defecto y otra con uno mucho mayor. ¿El mismo fallo, a la misma velocidad? Cambie la condición. ¿Otro comportamiento? Tiene un objetivo simplemente lento, y el tiempo de espera es el ajuste adecuado.

En resumen

  • El mismo fallo a 10 s y a 45 s indica una condición equivocada, no una duración equivocada.
  • --wait-until load para objetivos que consultan sin parar.
  • Póngalo en el escenario para que viaje con el objetivo.
  • Mantenga networkidle en todos los demás casos.