es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo comprobar si un sitio web ha cargado completamente en un script de bash?

Estoy haciendo un proyecto que se comporta como un inicio de sesión automático utilizando xdotool. A continuación se muestra el comando de script bash:

if [ "$url" == "https://github.com/login" ]; then
  sleep 5
  xdotool type $WUSER
  xdotool key Tab
  xdotool type $DECPASS
  xdotool key Return
else 
  exit 1
fi

Habrá una URL predeterminada para la página de inicio de sesión (por ejemplo, https://github.com/login), que ejecutará este script al iniciar el navegador:

  • escribir automáticamente el nombre de usuario
  • presionar la tecla tabulador
  • escribir la contraseña
  • hacer clic en Enter

En este momento, utilizo sleep 5 (esperar 5 segundos hasta que se ejecute el siguiente comando), lo cual es un poco “hacky” porque algunas páginas se cargan muy rápido y otras no.

Pregunta:

¿Cómo verificar primero si la página se ha cargado completamente antes de ejecutar el comando? Tal vez se vea algo así, o si hay otros métodos mejores.

bash
if [ "$url" == "https://github.com/login" ]; then
if [ <página se="" ha="" cargado="" completamente=""> ]; then
xdotool type $WUSER
xdotool key Tab
xdotool type $DECPASS
xdotool key Return
else
<esperar hasta="" que="" se="" cargue="" la="" página="">
fi
else
exit 1
fi
</página>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para comprobar si la página se ha cargado completamente antes de ejecutar el comando, se puede utilizar una herramienta como xdotool para detectar cuándo un elemento específico de la página se ha cargado. Por ejemplo, se podría utilizar xdotool para detectar cuándo se ha cargado el formulario de inicio de sesión comprobando la existencia del campo de nombre de usuario y contraseña.

    El siguiente código muestra cómo se puede utilizar xdotool para esperar a que se cargue el formulario de inicio de sesión antes de ejecutar el script de inicio de sesión automático:

    if [ "$url" == "https://github.com/login" ]; then
      while ! xdotool search --name "Sign in to GitHub · GitHub" > /dev/null; do
        sleep 1
      done
      sleep 1
      xdotool type $WUSER
      xdotool key Tab
      xdotool type $DECPASS
      xdotool key Return
    else 
      exit 1
    fi
    

    En este script, utilizamos un bucle while para esperar hasta que xdotool encuentre el formulario de inicio de sesión en la página (en este caso, el título de la ventana contiene el texto “Sign in to GitHub · GitHub”). Una vez que se encuentra el formulario, esperamos un segundo adicional (solo para asegurarnos de que la página se haya cargado por completo) antes de ejecutar los comandos de inicio de sesión automático.

    Este método permite evitar el uso de una demora codificada y asegura que los comandos de inicio de sesión automático se ejecuten solo cuando la página esté completamente cargada.

Comments are closed.