Automatizar operaciones en el sistema en Linux
En un artículo anterior que publiqué podemos ver cómo automatizar las acciones del mouse y del teclado, en Linux, con un paquete de software llamado Actiona. En esta ocasión, vamos a revisar este mismo tema de automatizar operaciones en el sistema en Linux, pero con otro paquete más potente, llamado SikuliX.
Así lo describe el equipo de desarrollo en la página oficial de SikuliX:
Sikulix automatiza todo lo que vea en la pantalla de su computadora de escritorio con Windows, Mac o algún Linux/Unix.Utiliza el reconocimiento de imágenes impulsado por OpenCV para identificar componentes de la GUI.
De manera que SikuliX suele ser usado en ambientes de pruebas de software, y en la automatización de juegos de computadores.
Preparación de la solución
En realidad SikuliX es un IDE para programar el algoritmo de automatización. Primero descargamos el paquete sikulixide-2.0.5.jar (está en la versión 2.0.5 al momento de escribir este artículo).
https://launchpad.net/sikuli/+download
Como es un paquete Java, debemos tener instalado el Java Runtime Environment en nuestro sistema. Puedes instalarlo con el siguiente comando:
sudo apt install default-jre
Adicionalmente debemos instalar las siguientes dependencias para su correcto funcionamiento:
sudo apt install tesseract-ocr
sudo apt install wmctrl
sudo apt install xdotool
Ahora sí ya podemos ejecutar a SikuliX
java -jar sikulixide-2.0.5.jar
Voy a mostrar el funcionamiento de esta solución con un ejemplo de los que me toca en la vida real. Se trata de leer en la pantalla, desde un sistema de información, un código EAN de ciertos productos identificados con un número de material.
1- Ingresamos en el sistema de información
Loguearse en el sistema
Le digo a SikuliX que ubique el campo de Usuarios para que escriba las credenciales de ingreso. Ubicamos el área de los campos de usuario y contraseña, y lo afinamos indicándole el campo de Usuarios.
En detalle, lo que hacemos es instanciar un objeto del área del formulario de ingreso, mostrándoselo con una fotografía de esa región de la pantalla (línea 3). Luego usamos el método find del objeto que hemos instanciado para afinar la ubicación del campo Usuario (linea 4). Justo ahí, le indicamos a SikuliX que escriba nuestras credenciales para entrar al sistema.
2- Procesando la información consultada
Avanzando en el algoritmo, vemos que ejecutamos un script Bash llamado veri-ean.sh, que lo único que hace es copiar al portapapeles (clipboard) una lista de datos (los códigos de material que identificación los productos). La línea 38 hace eso. Luego, en la línea 40, guardamos el contenido del portapapeles en la variable material. Ese material es el que escribimos en nuestro sistema de información (la línea 54).
Como lo que hace el script veri_ean-sh es traernos una lista de materiales al portapapeles, debemos iterar sobre esa estructura de datos, y por eso el bucle while en la línea 35.
Es muy fácil adivinar lo que hace la línea 36: limpiar el portapapeles.
Si necesitamos enviar una combinación de teclas, podemos hacerlo con los atributos del objeto KeyModifier. Por ejemplo, en la línea 47 enviamos al sistema de información la combinación de teclas SHIFT + F3.
Finalmente para leer y guardar los datos consultados en un archivo de texto, tenemos la parte final del algoritmo:
La línea 66 contiene el método para leer textos de una imagen JPG o PNG, o directamente lo que esté proyectando la pantalla. Esto último es lo que está configurado en la línea 66.
Entonces concatenamos las variables material y EAN, para guardarlo en un archivo de texto que trabaja el script registra_ean.sh (línea 70). Eso lo logramos pegando en el portapapeles las variables concatenadas, y el script registra_ean.sh se encarga de tomar lo que esté en el portapapeles para registrar el archivo.
Si todo marcha según el algoritmo, podemos generar su ejecutable en el menú Archivo:
Conclusión
Aunque SikuliX no es tan scratch como Actiona, su versatilidad potenciada por sus clases, atributos y OpenCV, compensan en gran medida su falta de intuición, entregando productos con una gran flexibilidad y alcance, por lo que podemos categorizarlo como software RPA.
Puedes encontrar más documentación en:
También tenemos una comunidad de SikuliX en StackOverflow.
Valora este artículo










Pingback: 🥇 Automatizar el mouse y el teclado en Linux - Ubuntu