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
| Valor | Termina con | Úselo cuando |
|---|---|---|
networkidle | 500 ms sin tráfico de red | por defecto: consérvelo salvo que falle |
load | el evento load de la página | el objetivo consulta el servidor sin parar |
domcontentloaded | el HTML analizado, el resto de recursos aún cargando | necesita 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 loadpara objetivos que consultan sin parar.- Póngalo en el escenario para que viaje con el objetivo.
- Mantenga
networkidleen todos los demás casos.