Con este artículo inicio una serie en la que iré mostrando las capacidades de SikuliX mediante tests de ejemplo. Como no podía ser de otra forma, comenzaremos con un “¡Hola mundo!”.
Es sorprendente ver cómo un ejemplo tan básico contiene buena parte
de las principales funcionalidades necesarias para realizar un test de
GUI de una aplicación. A saber:
1 – Búsqueda de una determinada imagen en pantalla. En este caso, un botón.
2 – Generar un click sobre un botón.
3 – Esperar unos segundos hasta que se complete una determinada acción.
4 – Introducir una palabra o frase en un cuadro de texto.
5 – Enviar el comando de una tecla especial. En este caso, retorno de carro.
6 – Ejecutar un flujo secuencial de acciones: las mencionadas en esta lista.
Solo con esas 6 funcionalidades se puede probar gran parte de las especificaciones de cualquier aplicación. Y todo eso en SikuliX se hace con los comandos siguientes:
click(
wait(1)
click(
wait(1)
type("notepad"+Key.ENTER)
wait(1)
type("Hola mundo!")
En el siguiente vídeo se ve el script en acción :
Ahora no entraré a detallar cada comando sino que daré una explicación básica para entender el test. Los detalles vendrán en futuros artículos.
El comando click() ejecuta la pulsación del botón izquierdo del ratón sobre la imagen que se le pasa como parámetro. Es decir, primeramente es capaz de reconocer un determinado patrón visual y localizarlo en la pantalla. Y, posteriormente, ejecuta una pulsación de ratón en esa posición.
El comando wait() detiene la ejecución del script durante los segundos que se pase como parámetro. Suele ser necesario utilizar este comando porque después de cualquier acción (como la pulsación del botón "Inicio" en este script) tarda unos milisegundos en aparecer el resultado de dicha acción (en este caso, la aparición del menú desplegable). Si no esperamos un tiempo, el siguiente comando no encontrará la imagen que busca así que el test se detendría con un error.
Obviamente, esta no es una buena técnica para sincronizar eventos. Lo lógico sería esperar hasta que el menú apareciera en lugar de indicar un tiempo fijo. Esto también lo permite este comando si se le pasa como parámetro una imagen, quedándose detenido hasta que esa imagen aparezca en pantalla. Veremos ejemplos de esto en futuros artículos.
El comando type() escribe un texto o pulsa teclas especiales sobre el control que posea el foco o sobre el que se pasa como parámetro. En nuestro caso, tras hacer click sobre el opción “Ejecutar”, se muestra un diálogo cuyo control activo es un cuadro de texto. Por eso no es necesario poner el foco sobre él. Sin embargo, suele ser una buena práctica poner primero el foco (pasando como parámetro una captura del control o haciendo un click sobre él) y luego escribir el texto.
Hemos visto un ejemplo sencillo pero, a la vez, representativo del enorme abanico de acciones que se pueden llevar a cabo con un escueto script de 3 comandos y 7 líneas de código. En futuros artículos seguiremos aprendiendo los comandos de SikuliX mediante ejemplos.
No hay comentarios:
Publicar un comentario