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:
El proyecto se compone de tres clases principales:
Responsable de la gestión del navegador a nivel HTTP (/json endpoint).
Encapsula la conexión WebSocket al Chrome DevTools Protocol.
Simplifica la automatización mediante métodos de alto nivel que encapsulan JavaScript común.
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.
Instanciamos el envoltorio de JavaScript que nos permitirá abrir, conectar e interactuar con la página.
Para mostrar la administración de pestañas, vamos a cerrar la pestaña en blanco que nos abre Chrome.
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.
Y por supuesto, podemos ejecutar instrucciones JS directamente.
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.
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.
Representa una conexión WebSocket a la interfaz de depuración de una página de Chrome.
Ejecuta instrucciones JavaScript y espera a que cargue el documento.
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.
Realiza un click en el elemento seleccionado por el selector CSS proporcionado.
Introduce una cadena de texto en el elemento input seleccionado por el selector CSS proporcionado y dispara un evento "change" para actualizar el formulario.
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.