Abrir una web con un script de Autoit

Abrir una web con un script de Autoit

Scripts Scripts AutoIt Utilidades

En este artículo veremos como abrir una web con un script de Autoit, una forma cómoda de acceder a una página que usemos habitualmente.

Accederemos a una web para la que necesitamos proporcionar nombre de usuario y contraseña.

Lógicamente, aunque el ejemplo vaya a ser desarrollado para el acceso a una web, la solución puede ser adaptada a intranets corporativas o programas protegidos por contraseña.

Daré por sentado que tienes un mínimo conocimiento de lo que es Autoit, lo tienes instalado y sabes moverte por su editor y ayuda con soltura.

Si no es así, puedes consultar las entradas Programar Scripts Con AutoIt. Mi Primer Script (I) y Programando Scripts Con AutoIt. Mi Primer Script (II)

Preparativos

Lo primero que vamos a hacer es establecer el modo en que queremos identificar las ventanas a través del título. Esto se hace a través de la opción WinTitleMatchMode. Elegiremos la opción 2 para poder referirnos a las ventanas con una coincidencia parcial y no tener así que usar la denominación íntegra y exacta.

Definiremos, además, dos variables en las que almacenar nuestro nombre de usuario y contraseña. Si los almacenamos de esta forma, en la cabecera del script, el mantenimiento posterior cuando modifiquemos alguno de los valores, siempre será mas sencillo que si tenemos los valores desperdigados por el código.

Básicamente, tendremos lo siguiente:

Opt("WinTitleMatchMode", 2)

$User="MiUsuario"
$Pass="MiContraseña"

Abrir el navegador

Nuestro siguiente paso será abrir el navegador. En mi caso es Chrome, pero podría ser cualquiera. Solo tienes que modificarlo a la ruta del tuyo.

Usaremos la instrucción Run a la que indicaremos la ruta completa del ejecutable de Chrome.

;Abrir Chrome
Run("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")

Esperaremos a que exista la ventana con WinWait:

;Espera a que se active la ventana del explorador
WinWait("Google Chrome")

y haremos que sea la ventana activa usando WinActivate:

WinActivate("Google Chrome")

Finalmente, por si se nos abre en algún sitio «raro», la movemos a las coordenadas 0,0 (arriba, izquierda) y maximizamos la ventana, todo ello por medio de las instrucciones WinMove y WinSetState:

;Maximizar navegador y mover a 0,0
WinMove("Google Chrome","",0,0)
WinSetState("Google Chrome","",@SW_MAXIMIZE)

Aunque no es estrictamente necesario, por evitar que el script «corra» mas que la ventana del navegador y las siguientes instrucciones se pierdan no se sabe muy bien donde, introduciremos un pequeño tiempo de espera con Sleep de 250 ms:

Sleep(250)

Abrir la página web

Ahora que ya tenemos el navegador abierto y donde lo queríamos, vamos a enviar la dirección URL a la que queremos acceder.

Previamente, deberemos posicionarnos en la barra de direcciones del naevegador.

En Chrome tenemos un atajo de teclado para posicionarnos en la barra de direcciones que es Ctrl+l, que es lo que enviaremos antes de mandar la URL. Afortunadamente este atajo sirve también para Firefox y para Edge, al menos.

Lo haremos con una instrucción Send:

;Posicionarse en barra direcciones y enviar página
Send("^l")
Send("http://informaticamuyfacil.com/wp-login.php")
Send("{Enter}")

Con el envío den Enter de la última línea, hacemos que Chrome cargue la página.

Abrir una web con un script de Autoit - Página de acceso

Envío de credenciales

El siguiente paso será el envío de las credenciales para acceder a los campos correctos y hacer click en Enter.

Deberemos esperar a que la página se haya cargado antes de hacer el envío ya que, en caso contrario, no sabremos donde estamos mandando la información ni el efecto que producirá.

En este caso, como no sabemos el tiempo que la página puede tardar en cargar, ya que depende de la red, de la respuesta del servidor, etc., lo mejor es esperar hasta que se haya cargado algo reconocible.

Esperaremos a que el título de la página esté disponible y le añadiremos medio segundo de seguridad.

;Espera a que se active la ventana de Inicio
WinWaitActive("Acceder")
sleep(500)

Como lo que se nos abre es un formulario, nos podemos mover por él usando la tecla de tabulación. Eso si, necesitaremos partir de un punto conocido.

Tras las pruebas que he hecho en la página, he visto que si hago click en cualquier sitio vacío de la página, el primer Tab selecciona el logo de WordPress, el siguiente el campo para introducir el usuario y el siguiente el campo para la contraseña. Haciendo Enter se envían los datos del formulario.

Posicionarse en la página

Lo haremos haciendo un click de mouse en unas coordenadas seguras en las que no haya nada. En este caso es sencillo, ya que la página está prácticamente vacía, a excepción del formulario. Usaremos un MouseClick:

;Posicionarse en un punto vacío de la página
MouseClick("left",50,250)
Enviar los datos

A partir de este punto conocido, enviaremos las teclas Tab necesarias para posicionarnos en cada campo del formulario y los datos de usuario y contraseña. Obviamente, usaremos la instrucción Send. Insertaremos también unos pequeños retrasos por eso de «vísteme despacio, que tengo prisa».

;Posicionarse en cajetin user/pass: enviar dos Tab para ir al cajetin de usuario
Send("{Tab}")
Sleep(100)
Send("{Tab}")
Sleep(100)
send($User)
sleep(150)
Send("{Tab}")
send($Pass)
sleep(150)
Send("{Enter}")

Milagrosamente (o no), accedemos al escritorio de WordPress para editar esta página.

Código completo

El código completo quedaría como sigue:

Opt("WinTitleMatchMode", 2)

$User="MiUsuario"
$Pass="MiContraseña"

;Abrir Chrome
Run("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")
;Espera a que se active la ventana del explorador
WinWait("Google Chrome")
WinActivate("Google Chrome")

;Maximizar navegador y mover a 0,0
WinMove("Google Chrome","",0,0)
WinSetState("Google Chrome","",@SW_MAXIMIZE)
Sleep(250)

;Posicionarse en barra direcciones y enviar página
Send("^l")
Send("http://informaticamuyfacil.com/wp-login.php")
Send("{Enter}")

;Espera a que se active la ventana de Inicio
WinWaitActive("Acceder")
sleep(500)

;Posicionarse en un punto vacío de la página
MouseClick("left",50,250)

;Posicionarse en cajetin user/pass: enviar dos Tab para ir al cajetin de usuario
Send("{Tab}")
Sleep(100)
Send("{Tab}")
Sleep(100)
send($User)
sleep(150)
Send("{Tab}")
send($Pass)
sleep(150)
Send("{Enter}")

Conclusiones

Ya has visto que abrir una web con un script de Autoit y acceder a ella mediante el envío de usuario y password es una tarea realmente sencilla.

Aquí se ha presentado usando una técnica para localizar los campos de usuario y contraseña basada en que por la página nos podemos mover mediante el uso del tabulador. Esto suele ser algo bastante generalizado.

Sin embargo, podríamos haber optado por otros métodos como localizar la posición de los campos en la pantalla, por ejemplo. La imaginación del programador para resolver los posibles problemas es una de las mejores herramientas.

Si tienes curiosidad y ganas de ampliar conocimientos, visita la página de AutoIt.

Deja una respuesta