El cielo de los robots software
26/06/2015
Automatización: el mito de la sustitución
24/09/2015
Mostrar todo

Control, control

control control

Hace algunos años, se hizo muy famosa en España una bruja televisiva. Una de sus frases más célebres fue “te voy a poner dos velas negras” y otra, que da título a esta entrada era “control control”.

En la automatización de tareas por parte de robots software uno de los retos más interesantes de afrontar es el que se refiere a la identificación y obtención de la información de las aplicaciones controladas.

Esta identificación se refiere a saber dónde está una caja de texto concreta, dónde se ubica un determinado botón o dónde está el knob scroll en un momento dado.

Una vez identificado el control que queremos manipular podemos obtener la información o realizar la acción que necesitemos.

La identificación de un control para una persona resulta en el 99% de las ocasiones trivial, solo tiene que leer un poco y si ya conoce la aplicación porque la ha utilizado algún tiempo, no tiene más que confirmar que la caja de texto que está buscando está donde debería estar.

Para un robot la cosa cambia. Los humanos poseen habilidades muy diferentes a las de un robot y estas diferencias provocan que el acercamiento a la resolución de un problema deba ser también distinto, al menos en parte.

Además, hay que tener en cuenta que las aplicaciones utilizadas por los robots imitando a las personas pueden cambiar sin previo aviso y que los robots, llegado el momento adecuado de madurez no suelen tener una supervisión muy alta por parte de ninguna persona.

Con estas premisas en mente, debemos resolver la cuestión.

Para ello, vamos a enumerar los distintos métodos para acceder a la información deseada que están disponibles utilizando Jidoka SDK.

Teclado

El teclado es un método muy preciso y consistente. Por ejemplo Alt-F4 en una determinada ventana casi siempre realizará la misma acción o 3 tabuladores desde el inicio pondrán el foco en el mismo campo.

El teclado también es un método muy válido cuando la aplicación a controlar no cambia con mucha frecuencia. Un cambio en el orden de los campos, o en las teclas de métodos abreviados puede suponer un problema hasta que se detecta, una vez detectado la actualización del robot suele ser rápida.

Controles de Windows

En el sistema operativo Windows, tenemos disponible un API para seleccionar el control que queramos en base a un identificador único por cada ventana. Utilizando este método nos aseguramos de que obtendremos resultados correctos mientras no haya un rediseño de la ventana que estamos tratando. El rediseño debe ser de gran calado para que afecte a los identificadores por lo que es una técnica muy segura cuando está disponible.

Sin embargo, resulta de poca utilidad cuando las aplicaciones no utilizan controles estándares.

DOM (document object model)

Para las aplicaciones web, tenemos un método especialmente interesante, el acceso al DOM. El DOM es la representación de los componentes (controles) de una página. A través de él podemos navegar hasta encontrar un botón, un checkbox, texto o cualquier otro elemento. Además es posible realizar búsquedas utilizando los distintos atributos de las etiquetas HTML así como la relación de unas con otras.

Cuando estamos trabajando con aplicaciones web, el método DOM es uno de los más adecuados, aunque hay que tener en cuenta que dicho DOM cambia con cada nueva versión de la aplicación. El robot debe estar programado para no tener que modificarse con cada cambio de la aplicación. Cuando logramos este objetivo podemos decir que el robot es un “robot maduro”.

Coordenadas

El método de localización por coordenadas resulta muy fácil de implementar, tan sólo necesitamos saber dónde se ubicará el control que queremos manipular. Esta es su gran ventaja.

Como inconveniente principal nos encontramos con que un cambio en la ventana donde utilizamos esta técnica implicaría un ajuste en el robot. Pero no solo en un caso así, podría ocurrir incluso por el hecho de cambiar la resolución de la ventana o el monitor de la máquina donde se ejecuta el robot (si lo tuviera).

También puede resultar problemático el uso de coordenadas cuando el volumen de información de los apartados de las ventanas es variable ya que puede producirse scroll.

Reconocimiento de imágenes

En Jidoka hemos desarrollado nuestra propia solución para el reconocimiento de imágenes a la que hemos llamado “Ojo de Halcón”. En base a nuestra experiencia en el desarrollo de centenares de robots hemos percibido que los cambios menores en las aplicaciones no suelen incluir modificaciones en los iconos o imágenes que utilizan, tampoco en los tipos de letras que usan ni en el estilo de la presentación. Los desarrolladores suelen reservar este tipo de cambios para saltos de versión.

Aprovechando esa imagen estática de las aplicaciones, desarrollamos Ojo de Halcón para el reconocimiento de imágenes que nos permite resolver el problema de la identificación de controles, incluso si cambian su posición en las ventanas al instalarse nuevas versiones.

Señalar también que cuando hablamos de identificación de imágenes no hablamos solo de identificación de imágenes idénticas, también hablamos de identificación de imágenes similares o con un umbral de tolerancia programable. De esta forma podemos conseguir los resultados esperados aunque haya ligeros cambios provocados por modificaciones en la resolución de la pantalla, en la profundidad del color, o incluso debidas a los sistemas de monitorización corporativos que, en ocasiones, modifican la salida por pantalla.

De todo un poco: imaginación

Sin embargo, el mejor método con diferencia para localizar un control en una pantalla es la imaginación. La imaginación de hacer trabajar juntas distintas técnicas. La imaginación de “inventar” una nueva técnica. ¿No te parece divertido programar robots?

Juan Manuel Reina Morales
Juan Manuel Reina Morales
CTO de Jidoka. Socio fundador de Novayre, empresa tecnológica apasionada por la innovación software y la automatización. "La verdad está en el código".

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *