RPA Sin Licencias – Cliente

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.

Published
Categorized as RPA

Leave a comment

Your email address will not be published. Required fields are marked *