DEV Community

Cover image for Tutorial Robot Framework: Instalación y primeros pasos
Juan Martin Ruiz
Juan Martin Ruiz

Posted on

Tutorial Robot Framework: Instalación y primeros pasos

Aclaración: Este tutorial fue originalmente creado para uso interno en la empresa mientras estudiaba el framework. Es del 2020, por lo que verán que instalé la herramienta en Windows 10; sin embargo, la instalación y la forma de trabajar no han cambiado mucho. Decidí compartirlo porque es una pena tenerlo perdido entre mis notas. Quizás lo actualice en el futuro.

Robot Framework es un marco de automatización de código abierto genérico. Se puede utilizar para la automatización de pruebas y la automatización de procesos robóticos (RPA).
Cuenta con un soporte activo, y muchas empresas líderes en la industria lo utilizan en su desarrollo de software.
Robot Framework es abierto y extensible y se puede integrar con prácticamente cualquier otra herramienta para crear soluciones de automatización potentes y flexibles. Ser de código abierto también significa que Robot Framework es de uso gratuito sin costos de licencia.
Tiene una sintaxis sencilla y utiliza palabras clave legibles por humanos. Sus capacidades se pueden ampliar mediante bibliotecas implementadas con Python o Java. El marco tiene un ecosistema rico a su alrededor, que consta de bibliotecas y herramientas que se desarrollan como proyectos separados.
El proyecto Robot Framework está alojado en GitHub, donde puede encontrar más documentación, código fuente y seguimiento de problemas. Las descargas se alojan en PyPI.
Robot Framework es independiente del sistema operativo y la aplicación. El marco principal se implementa con Python y también se ejecuta en Jython (JVM) e IronPython (.NET).
Robot Framework en sí es un software de código abierto publicado bajo Apache License 2.0 , y la mayoría de las bibliotecas y herramientas del ecosistema también son de código abierto. El marco se desarrolló inicialmente en Nokia Networks y fue de código abierto en 2008.
https://robotframework.org/

¿Qué es un framework para automatizar pruebas?

▸ Es un lenguaje donde se puede escribir las pruebas.
▸ Tiene rutinas de códigos.
▸ Se puede reusar estos códigos para diferentes secciones de una
pagina.
▸ Soporta librerías que llevan a cabo diferentes acciones (Probar
Interfaces Web, API, Bases de Datos, Móviles)
▸ Tiene una capa de abstracción que te permite escribir los
casos en lenguaje natural.
▸ Permite correr casos con el uso de Etiquetas.
▸ Te permite seleccionar los casos por Suites o configuraciones.
▸ Permite la integración para configurar los códigos de las
pruebas y correrlos en diferentes horarios.
▸ Realiza los reportes con los resultados, e incluye los pasos, las
horas, te permite buscar en los resultados e incluye
impresiones de pantalla cuando algo no funciona.

¿Por qué Robot Framework?

  • Permite una sintaxis tabular fácil de usar para crear casos de prueba de manera uniforme.
  • Proporciona la capacidad de crear palabras clave reutilizables de nivel superior a partir de las palabras clave existentes.
  • Proporciona informes de resultados y registros fáciles de leer en formato HTML.
  • Es independiente de la plataforma y la aplicación.
  • Proporciona una API de biblioteca simple para crear bibliotecas de prueba personalizadas que se pueden implementar de forma nativa con Python o Java.
  • Proporciona una interfaz de línea de comandos y archivos de salida basados en XML para la integración en la infraestructura de construcción existente (sistemas de integración continua).
  • Brinda soporte para Selenium para pruebas web, pruebas de GUI de Java, procesos en ejecución, Telnet, SSH, etc.
  • Admite la creación de casos de prueba basados en datos .
  • Tiene soporte incorporado para variables , práctico particularmente para pruebas en diferentes entornos.
  • Proporciona etiquetado para categorizar y seleccionar casos de prueba que se ejecutarán.
  • Permite una fácil integración con el control de código fuente: las suites de prueba son solo archivos y directorios que se pueden versionar con el código de producción.
  • Proporciona caso de prueba y la prueba de la suite de instalación y el desmontaje -level.
  • La arquitectura modular admite la creación de pruebas incluso para aplicaciones con varias interfaces diversas.

https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#id498

Origen e historia

2005:
‣ Desarrollado en Finlandia
‣ Básicamente nace como idea de tésis de maestria de Pekka Klärck y para Nokia.
2008:
‣ Se lanza la version 2.0 como versión de código abierto.
2020:
‣ Versión actual: 3.2.2

Funcionalidades y capacidades

‣ Multiplataforma, se puede usar tanto en Windows como Mac y Linux
‣ Es un lenguaje basado en Keywords y con capacidades de inserción de datos, según lo requerido
en la prueba.
‣ Lenguaje Natural de acuerdo al área de negocios
‣ Librerias:

Instalación en Windows 10

Ir a la pagina del lenguaje Python: https://www.python.org/
Seleccionar versión mayor a 3

Una vez descargado ejecutar el instalador

  1. Dejar tildado el checkbox “Install launcher for all users” y también “Add Python 3.8 to PATH” esta opción permitirá ejecutar comando de python o del framework sin ser administrador.
  2. Luego seleccionar “Install Now”

Hacer click en “Disable path length limit”

Desactivar path length limit

Luego de finalizada la instalación hacer click en botón “Close”

Verificar versión instalada de python

La instalación de python viene por defecto con el instalador de paquetes/librerías llamado “pip”, similar a npm de node y NuGet de .NET

Con “pip” instalar robot framework

pip install robotframework
Enter fullscreen mode Exit fullscreen mode

Se ha instalado correctamente robotframework.
Luego de instalar correctamente puede aparecer este mensaje de warning, detectó que el “pip” instalado por defecto tiene una versión actualizada disponible, como dice en el warning actualizamos con el comando:

pip install --upgrade pip
Enter fullscreen mode Exit fullscreen mode

Para saber los paquetes que instalamos:

pip list
Enter fullscreen mode Exit fullscreen mode

Otra manera con el comando del framework:

robot --version
Enter fullscreen mode Exit fullscreen mode

Instalar la librería Selenium:

pip install --upgrade robotframework-seleniumlibrary
Enter fullscreen mode Exit fullscreen mode

Verificar la librería instalada en la lista de paquetes:

Configurar Drivers de navegadores:

Navegadores soportados

https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html#Open%20Browser

Chromedriver

Ir a https://chromedriver.chromium.org/:

Luego de haber descargado el archivo descomprimir el zip, luego cortar y pegar el .exe a la carpeta de PATH:
C:\Users\jruiz\AppData\Local\Programs\Python\Python38-32\Scripts

Firefox

Descargar el driver en: https://github.com/mozilla/geckodriver/releases

Luego mismo procedimiento de chrome, después de descomprimir el zip cortar y pegar el .exe a la carpeta de PATH:
C:\Users\jruiz\AppData\Local\Programs\Python\Python38-32\Scripts

Opera

Editores de código

https://robotframework.org/#tools

Visual Studio Code

Instalar plugins para Visual Studio Code

Robot Framework Intellisense

Ahora aparece resaltado la sintaxis

Robotframework Debugger

Crear nuevo proyecto

Luego de instalar los plugins no hace falta otra configuracion, para comenzar a escribir los casos de pruebas hay que crear una nueva carpeta y dentro crear por ejemplo el archivo primer-automatizacion.robot

Test Case

*** Settings ***
Documentation       Existe en un documento de texto los pasos manuales
...                 Esta es mi primera automatizacion
Library             SeleniumLibrary

*** Variables ***
${palabraABuscar}   clima hoy
${Navegador}    chrome
${URL}      https://www.google.com/

*** Keywords ***
Abrir Navegador y Esperar Logo
    #se tiene que separar por tabulacion (o tres veces barra espaciadora) cada nueva linea
    #tambien se tiene que separar con tabulacion en el comando y el parametro
    Open Browser    ${URL}     ${Navegador}
    Wait Until Element Is Visible   xpath=//*[@id="hplogo"]

*** Test Cases ***
Busqueda de palabras en google
    Abrir Navegador y Esperar Logo
    Input Text      xpath=//*[@id="tsf"]/div[2]/div[1]/div[1]/div/div[2]/input     ${palabraABuscar}
    Click Element       xpath=//*[@id="hplogo"]
    Click Element       xpath=//*[@id="tsf"]/div[2]/div[1]/div[3]/center/input[1]
    Title Should Be     ${palabraABuscar} - Buscar con Google
    Page Should Contain     ${palabraABuscar}
    Close Browser

Hacer click en el botón de búsqueda sin escribir palabras en Google
    Abrir Navegador y Esperar Logo
    Click Element       xpath=//*[@id="tsf"]/div[2]/div[1]/div[3]/center/input[1]
    Title Should Be     Google
    Close Browser
Enter fullscreen mode Exit fullscreen mode

Para ejecutar este caso prueba desde la consola de windows:

robot primer-automatizacion.robot
Enter fullscreen mode Exit fullscreen mode

Ejecutar un caso específico

robot -t "Verify that a valid user can login to the system" LoginTest.robot

Sintaxis

La sintaxis consta basicamente de 4 segmentos
Settings, Variables, Keywords y Test Cases

Settings

En ese segmento a sintaxis suele ir:
- Documentacion
- Importacion de Resources: Una página de recursos es un lugar en donde puedo buscar elementos comunes que tengo para todas las pruebas . Luego para llamar a esa pagina tengo que decir en donde esta ese archivo o librería para luego utilizarlo.
- Por ejemplo los elementos de setting son muy común o recurrentes porque en todos los lugares voy a usar la librería.
- Library: se importan las librerias, la mas conocida SeleniumLibrary.
*** Settings ***
Documentation       Existe en un documento de texto los pasos manuales
...                 Esta es mi primera automatizacion
Library             SeleniumLibrary
Resource            recursos.robot 
Enter fullscreen mode Exit fullscreen mode

Variables

Se definen las variables a utilizar dentro de un test y tambien keywords

*** Variables ***
${palabraABuscar}   clima hoy
${Navegador}    chrome
${URL}      https://www.google.com/
Enter fullscreen mode Exit fullscreen mode

las variables no se reducen a tipo string, hay mas: https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#using-variables

Keywords (palabras clave)

Los keywords son las acciones como:
Open Browser

Wait Until Element Is Visible

Input Text

Click Element

Click Element

Title Should Be

Page Should Contain

Close Browser
Se pueden armar keywords para armar mis propios procesos

Ejemplo importando Resource (importacion de cualquier archivo)

Robot Framework y la libreria Selenium

Selenium Library es una librería externa de Robot Framework para probar
interfaces de aplicaciones web.
Se basa en Keywords que llevan a cabo diferentes funciones, según lo que
requieras en tu caso de prueba, entonces debes seleccionar cual KEYWORD
funciona mejor para las acciones que tengas en tu caso de prueba

Como funcionan los keywords

Hay una libreria que incluye todos los keywords que podes encontrar acá:
https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html
Ahi encontrarás como usar cada keyword y cada valor del argumento debe estar
separado por dos o más espacios.

Ejemplo Click Element

Locators (Localización de elementos)

Todas las palabras clave en SeleniumLibrary que necesitan interactuar con un elemento en una página web toman un argumento normalmente llamado locator que especifica cómo encontrar el elemento. La mayoría de las veces, el localizador se proporciona como una cadena utilizando la sintaxis del localizador que se describe a continuación.

Sintaxis del localizador

SeleniumLibrary admite la búsqueda de elementos en función de diferentes estrategias, como la identificación del elemento, las expresiones XPath o los selectores CSS. La estrategia puede especificarse explícitamente con un prefijo o puede ser implícita.
Estrategia de localizador predeterminada
De forma predeterminada, se considera que los localizadores utilizan la estrategia de localizador predeterminado específica de la palabra clave. Todas las palabras clave admiten la búsqueda de elementos basados en atributos id y name, pero algunas palabras clave admiten atributos adicionales u otros valores que tienen sentido en su contexto. Por ejemplo, Click Link admite el href atributo y el texto del enlace y la adición al normal id y name.
Ejemplos:

Click Element       xpath=/html/body/div[2]/div[2]/form/div[2]/div[1]/div[3]/center/input[1]
Enter fullscreen mode Exit fullscreen mode

¿Como busco el elemento?

Se va a copiar este texto “#hplogo”
Luego lo podemos utilizar con el Keyword “Wait Until Element Is Visible”

Wait Until Element Is Visible   id=hplogo   #va sin el numeral
Enter fullscreen mode Exit fullscreen mode

Si seleccionamos Copy XPath el texto es “//*[@id="hplogo"]”

Wait Until Element Is Visible   xpath=//*[@id="hplogo"]
Enter fullscreen mode Exit fullscreen mode

Implicitamente tambien comprende que tipo de selector estoy agregando

Wait Until Element Is Visible   //*[@id="hplogo"]
Enter fullscreen mode Exit fullscreen mode

Lista de diferentes tipos de selectores

https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html

BuiltIn

https://robotframework.org/robotframework/latest/libraries/BuiltIn.html
BuiltIn es la biblioteca estándar de Robot Framework que proporciona un conjunto de palabras clave genéricas que se necesitan con frecuencia. Se importa automáticamente y, por lo tanto, siempre está disponible. Las palabras clave proporcionadas se pueden utilizar, por ejemplo, para verificaciones (por ejemplo, Should Be Equal, Should Contain), conversiones (por ejemplo, Convert To Integer) y para varios otros propósitos (por ejemplo, Log, Sleep, Run Keyword If, Set Global Variable).
En el Shortcuts estan todos los elementos para poder encontrarlos rapidadamente.
https://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Create%20List

Paginas que fui encontrando

Otra documentacion completa
https://baishanlu.gitbooks.io/robot-framework-cn-en-user-manual/content/robot_framework_user_guide/version_287.html

xpath

https://www.lambdatest.com/blog/complete-guide-for-using-xpath-in-selenium-with-examples/#testid2.8.5

https://www.mclibre.org/consultar/xml/lecciones/xml-xpath.html

trucos comando

https://dev.to/juperala/how-to-run-robot-framework-test-from-command-line-5aa

Top comments (0)