GitHub
CHROME LIBRARY 1.1.0
¡Automiza Chrome con AHK v2!
Cargando...
Buscando...
Nada coincide
Inicio

CHROME LIBRARY

Documentation

Chrome Library es una implementación de la librería ahk2_lib/Chrome desarrollada por thqby. Proporciona una implementación ligera de automatización de Google Chrome utilizando el ⇱Chrome DevTools Protocol (CDP) mediante WebSocket en ⇱AutoHotkey V2. El objetivo es ofrecer una alternativa minimalista a herramientas como Selenium o Puppeteer, permitiendo:

  • Control directo del navegador
  • Ejecución de JavaScript
  • Navegación avanzada
  • Automatización de formularios
  • Gestión de pestañas

El proyecto se compone de tres clases principales:

1️⃣ ChromeV2

Responsable de la gestión del navegador a nivel HTTP (/json endpoint).

2️⃣ ChromeV2.Page

Encapsula la conexión WebSocket al Chrome DevTools Protocol.

3️⃣ JSWrapper

Simplifica la automatización mediante métodos de alto nivel que encapsulan JavaScript común.

Ejemplo básico

Vamos a crear un automatismo que inicie sesión en una página web de prueba.

Inicializamos nuestra instancia de Chrome Debug. Yo guardaré los datos de la aplicación en el directorio "C:\Temp\ChromeDebug", el resto de los parámetros los podemos dejar por defecto, como el puerto de escucha 9222.

Comentarios
La primera vez que ejecutemos el debugger de Chrome, nos pedirá configurar el navegador.
chromeManager := ChromeV2(,, ProfilePath := "C:\Temp\ChromeDebug")

Instanciamos el envoltorio de JavaScript que nos permitirá abrir, conectar e interactuar con la página.

loginPage := JSWrapper(chromeManager, "https://the-internet.herokuapp.com/login")

Para mostrar la administración de pestañas, vamos a cerrar la pestaña en blanco que nos abre Chrome.

blankPages := chromeManager.FindPages({url: "chrome://newtab/"}, matchMode := "exact")
chromeManager.ClosePage(blankPages[1], "exact")

Ejecutamos la función predefinida para el inicio de sesión indicando los selectores CSS para el input del usuario y contraseña, y para el mensaje de error en caso de que lo hubiera.

Comentarios
Para encontrar el selector de un elemento en HTML como un botón, hacemos clic derecho en él, inspeccionar, clic derecho sobre la línea HTML del elemento y "copiar selector".
result := loginPage.Login(selectorUserInput := "#username"
, selectorPasswordInput := "#password"
, selectorLoginButton := "button[type='submit']"
, selectorErrorOutput := "#flash.error"
, userName := "tomsmith"
, password := "SuperSecretPassword!"
)
if (result)
MsgBox("Login exitoso.")
else
MsgBox("Error de autenticación.")

Y por supuesto, podemos ejecutar instrucciones JS directamente.

loginPage.WaitForEvaluate('document.querySelector("#content > div > a > i").click()') ; hace clic en logout

¡Pruébalo en tu script!

Así de fácil es automatizar la mayoría de páginas web. La clase JSWrapper te facilita las funciones esenciales para las interacciones HTML que necesitarás. Siéntete libre que modificarla a conveniencia, pero antes échale un vistazo a la documentación de clases.

Métodos y clases esenciales

Chrome

Inicia o conecta una instancia de Google Chrome en modo depuración y abre las URL(s) indicadas si no están ya abiertas.

Parámetros
{String}ChromePath (Opcional) Ruta completa al ejecutable de Chrome. Si se deja en blanco, se buscará en los accesos directos, registros del sistema y en la ruta estándar.
{Integer}DebugPort (Opcional) Puerto local para el modo depuración. Por defecto: 9222.
{String}ProfilePath (Opcional) Ruta al perfil de usuario de Chrome. Si no se establece, se utilizará la ruta estándar.
{String}Flags (Opcional) Banderas adicionales para el lanzamiento de Chrome.
{String|Array<String>}URLs (Opcional) URL o colección de URL(s) a abrir al iniciar o conectar Chrome. Si la url exacta ya se encuentra abierta, no se vuelve a abrir.

Page

Representa una conexión WebSocket a la interfaz de depuración de una página de Chrome.

Ver también
https://chromedevtools.github.io/devtools-protocol

WaitForEvaluate

Ejecuta instrucciones JavaScript y espera a que cargue el documento.

JSWrapper

Crea una nueva instancia de JSWrapper vinculada a una página de Chrome específica, identificada por su URL.

Nota
Controla el cierre manual o inesperado del proceso de Chrome lanzando un error.
Parámetros
{ChromeV2}chromeManager Instancia del administrador de Chrome.
{String}url Enlace de la página a enlazar o abrir.
{String}matchMode (Opcional) Tipo de búsqueda para el enlace. Puede ser: exact, contains, startswith o regex. Por defecto: exact.
{Func}events (Opcional) Función a ejecutar cuando se reciba un mensaje de la página: msg => void.

Click

Realiza un click en el elemento seleccionado por el selector CSS proporcionado.

EditInputBox

Introduce una cadena de texto en el elemento input seleccionado por el selector CSS proporcionado y dispara un evento "change" para actualizar el formulario.

SelectListBox

Selecciona una opción en un elemento select (lista desplegable) utilizando el índice de la opción y dispara un evento "change" para actualizar el formulario.