Uno de los componentes clave para cualquier solucion de RPA es el cliente de ejecucion.
Este componente puede ser cualquier software que sea capas de ejecutar remotamente acciones en un ordenador segun una logica ordenada y definida.
En general se pueden usar las propias capacidades del sistema operativo, Powershell, Bash, entre otros. Pero como recordaran RPA se trata de usar la interfaz de usuario y estos lenguajes tienen problemas para trabajar con Browsers y Grabacion de pantalla principalmente.
Hay diversas iniciativas de software que se pueden utilizar, de codigo abierto y para el caso de este experimento (en vez de construir una propia) vamos a utilizar https://robotframework.org
Robotframework provee de un marco de trabajo para automatizar en un lenguaje de scripting propio las tareas que requeramos, y ya se han desarrollado algunas utilidades como la integracion con Selenium y Apium que serian nuestras estrellas para la navegacion web y mobile.
No hay mucha documentacion disponible o sencilla de robotframework es bastante de la vieja escuela, librerias y modulos para documentar, pero no van a encontrar un tutorial como el de Heroes de angular.
¿Que necesitamos para usar robotframework?
Tener un equipo con Python
¿Como lo podemos instalar?
- Primero necesitamos python: https://www.python.org/downloads/
- Podemos usar estos comandos: pip install robotframework
- Validamos la instalacion con : robot –version
- Y ahora instalamos selenium: pip install –upgrade robotframework-seleniumlibrary
- Y ahora los drivers de browsers con
- pip install webdrivermanager
- webdrivermanager firefox chrome –downloadpath . –linkpath .
¿Como funciona?
Robotframework funciona en base a archivos .robot
El archivo tiene diversas secciones, pero las relevantes inicialmente seran, las separaciones estan fuertemente tipadas por Tabs y espacios, asi que puede llevar algo de aprendizaje empirico acostumbrarse o un buen validador de sintaxis. (Yo estoy usando notepads para estas pruebas asi que pendiente recomendar uno)
- *** Settings ***: Puede contener la informacion de RPA, descripcion, asi como sus dependencias
- Documentation: Permite escribir la necesidad
- Libraries: Permite incluir las librerias que incluye, normalmente selenium
- Resources: Permite referenciar otros archivos .robot
- *** Variables ***: Permite definir variables para esta ejecucion. Las variables se nombran con la siguiente sintaxis ${nombre}
- *** Keywords ***: Permite definir funciones predefinidas para realizar ciertas acciones
- *** Test Cases ***: Son el cojunto de pasos a ejecutar, cada grupo se le asigna un nombre.
Para nuestro ejemplo tengo dos archivos
resource.robot
*** Settings ***
Documentation A file with variables.
...
... some data
*** Variables ***
${SERVER} duckduckgo.com
${BROWSER} Chrome
${DELAY} 0
${QUERY} hola
${QUERY_URL} https://${SERVER}/
${VALID_TITLE} DuckDuckGo — Privacy, simplified.
${VALID_URL} https://duckduckgo.com/?q=hola&t=h_&ia=web
query.robot
*** Settings ***
Documentation A test for a single query.
...
... This test has a workflow that is created using keywords in
... the imported resource file.
Library SeleniumLibrary
Resource resource.robot
*** Test Cases ***
Valid Navigation
Open Browser ${QUERY_URL} ${BROWSER}
Maximize Browser Window
Set Selenium Speed ${DELAY}
Title Should Be ${VALID_TITLE}
Input text search_form_input_homepage ${QUERY}
Click Button search_button_homepage
Location Should Be ${VALID_URL}
¿Como ejecutar?
Una vez creados los archivos, posicionarse en una carpeta y ejecutar
webdrivermanager firefox chrome --downloadpath . --linkpath .
robot .
Y listo eso deberia generar su automatizacion (prueba) y sus resultados. (Quiza tengan que hacer algunos ajustes) y pueden explorar los archivos output.xml, log.html, report.html a su propio ritmo.
Simple, pero algunos detalles.
La libreria de selenium y robot framework tienen un grupo de palabras y funciones predefinidas para facilitar el trabajo como ‘Open Browser Param1 Param2’
Su referencia la pueden encontrar en : https://robotframework.org/robotframework/latest/libraries/BuiltIn.html
y para selenium en https://github.com/robotframework/SeleniumLibrary/
Conclusiones.
Robotframework debido a su alta portabilidad, y a su alta personalizacion puede actuar como nuestro cliente. En la gran foto, nosotros vamos a ser capaces de empaquetar robotframework en un Container Image de docker, conjunto a nuestro grupo de archivos .robot y ejecutar via Cron o via comando ‘robot .’ donde aplique. via nuestra implementacion de kubernetes.
Teniendo en consideracion que estaremos principalmente usando el modo headless de los browsers. Y/o control remoto sobre otros equipos Desktop pero con las capacidades de los archivos .robot
En futuros post haremos mas detalles sobre Robotframework, tambien es algo bastante nuevo para mi, para casos de usos mas extremos.