Skip to main content

Robot Framework mini-framework.

Project description

RobotFramework-Zoomba

PyPI version Build Status Coverage Status CodeFactor Total alerts

Introduction

Robotframework-Zoomba is a collection of libraries spanning GUI, REST API, SOAP API, Mobile, and Windows Desktop (WinAppDriver) automation using Robot Framework. These libraries are extensions of existing libraries SeleniumLibrary, Requests, SudsLibrary, and AppiumLibrary.

Zoomba adds a significant amount of data validation support for REST and SOAP APIs, extends functionality for typical Web GUI automation, and extends AppiumLibrary functionality to support Windows desktop automation.

As a team beginning the journey of automation with Robot Framework - we found that there was some time spent ramping up our libraries and Robotframework-Zoomba aims to make that process easier for new projects.

See the Keyword Documentation for the API, SOAP, GUI, Mobile, or Desktop library for more specific information about the functionality.

Example tests can be found in the samples directory.

Some Features of the Library

GUI Library:

When working with web pages of varying load times you probably find yourself running a lot of calls like so:

Wait Until Page Contains Element      locator
Click Element                         locator

For ease of use we have combined a lot of these into simple one line keywords:

Wait For And Click Element      locator
Wait For And Click Text         text
Wait For And Select From List   list_locator    target_locator

Another keyword that is particularly useful is for when you are waiting for javascript to complete on a page before proceeding:

Wait For And Click Element       locator that leads to a new page with javascript     
Wait Until Javascript Is Complete
Wait For And Click Element       locator

API Library:

This library wraps the requests library so we have created a set of keywords to easily allow users to make requests in a single keyword:

Call Get Request       ${headers_dictionary}    endpoint    query_string
Call Post Request      ${headers_dictionary}    endpoint    query_string     ${data_payload}

After receiving your data we made it incredibly easy to validate it. Validate Response Contains Expected Response takes your received request and compares it to your expected data. If there are any errors found it will report line by line what they are.

Validate Response Contains Expected Response    ${json_actual_response}      ${json_expected_response}

If there is any mismatched data it will look something like this:

Key(s) Did Not Match:
------------------
Key: pear
Expected: fish
Actual: bird
------------------
Full List Breakdown:
Expected: [{'apple': 'cat', 'banana': 'dog', 'pear': 'fish'}, {'apple': 'cat', 'banana': 'mice', 'pear': 'bird'}, {'apple': 'dog', 'banana': 'mice', 'pear': 'cat'}]
Actual: [{'apple': 'cat', 'banana': 'dog', 'pear': 'bird'}]

Please see differing value(s)

If you wanted to ignore a key such as the 'update_date' you would simply set the 'ignored_keys' variable to that key or a list of keys:

Validate Response Contains Expected Response    ${json_actual_response}      ${json_expected_response}      ignored_keys=update_date
Validate Response Contains Expected Response    ${json_actual_response}      ${json_expected_response}      ignored_keys=${list_of_keys}

Mobile Library:

Extending the AppiumLibrary we again add some quality of life 'Wait For And' type keywords:

Wait For And Click Element      locator
Wait For And Click Text         text
Wait Until Element Contains     locator     text

There are of course additional features that have yet to be implemented in AppiumLibrary:

Drag and Drop      source_locator     target_locator
Drag And Drop By Offset     locator    x_offset     y_offset
Scroll Down To Text       text
Scroll Up To Text         text

Desktop Library:

Also extends AppiumLibrary to tailor it Windows desktop automation. This includes enhancements to base keywords such as Open Application or Click Element to perform better for windows. Other notable additions include:

Start and Stop the WinAppDriver as needed (best used for suite setup/teardown):

Driver Setup
Driver Teardown

Easily switching to new windows or the desktop session:

Switch Application      Desktop
Switch Application By Name     remote_url    new_window_name

A variety of keywords for controlling the mouse:

Mouse Over Element     locator
Mouse Over and Click Element    locator
Mouse over and Context Click Element    locator
Mouse Over By Offset     x_offset    y_offset

Keywords for dragging and dropping:

Drag and Drop      source_locator     target_locator
Drag And Drop By Offset     locator    x_offset     y_offset

The ability to send key commands to the application:

Send Keys     \\ue00      p     \\ue00
Send Keys To Element    locator     a     b     c

Selecting an element from a combobox or a menu:

Select Element From ComboBox     combobox_locator      element_locator
Select Elements From Menu     locator_1    locator_2   locator_n
Select Elements From Context Menu     locator_1    locator_2   locator_n

Selecting an element by an image file (Appium v1.18.0 and higher only):

Wait For And Click Element     image=file.png

Getting Started

The Zoomba library is easily installed using the setup.py file in the home directory. Simply run the following command to install Zoomba and it's dependencies:

pip install robotframework-zoomba

If you decide to pull the repo locally to make contributions or just want to play around with the code you can install Zoomba by running the following from the root directory:

pip install .

To access the keywords in the library simply add the following to your robot file settings (depending on what you need):

*** Settings ***
Library    Zoomba.APILibrary
Library    Zoomba.GUILibrary
Library    Zoomba.SOAPLibrary
Library    Zoomba.MobileLibrary
Library    Zoomba.DesktopLibrary

If you are using Microsoft Edge (Chromium version) you will need the following plugin and option set:

Library    Zoomba.GUILibrary     plugins=Zoomba.Helpers.EdgePlugin

Open Browser   https://www.google.com    browser=Edge     options=use_chromium=True

Additional Setup Information

If you plan to run Mobile automation you will need to have a running appium server. To do so first have Node installed and then run the following:

npm install -g appium
appium

To use the image locator strategy you will need to install opencv4nodejs via the following command:

npm install -g opencv4nodejs

Alternatively Appium Desktop can be used.

For Windows automation we suggest installing and using the WinAppDriver without Appium as it seems to be a bit faster and more stable.

Make sure to enable developer mode on your system to allow the WinAppDriver to work.

Examples

Example tests can be found in the samples directory.

The test directory may also contain tests but be aware that these are used for testing releases and may not be as straight forward to use as the ones in the samples directory.

Contributing

To make contributions please refer to the CONTRIBUTING guidelines.

Additionally if you run the following command new documentation will be generated on each commit :

git config core.hooksPath .githooks

Support

General Robot Framework questions should be directed to the community forum.

For questions and issues specific to Zoomba please create an issue here on Github. Otherwise you can contact the team at robosquad@accruent.com.

Project details


Release history Release notifications | RSS feed

This version

2.7.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

robotframework-zoomba-2.7.1.tar.gz (47.0 kB view details)

Uploaded Source

Built Distribution

robotframework_zoomba-2.7.1-py3-none-any.whl (48.0 kB view details)

Uploaded Python 3

File details

Details for the file robotframework-zoomba-2.7.1.tar.gz.

File metadata

  • Download URL: robotframework-zoomba-2.7.1.tar.gz
  • Upload date:
  • Size: 47.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.1

File hashes

Hashes for robotframework-zoomba-2.7.1.tar.gz
Algorithm Hash digest
SHA256 332bab14e15ad12bdeef38a707d77df212bce24811ae1905f4034d096b324fa5
MD5 aeb2f6d6f351a4b329b1b2960a7e2a6c
BLAKE2b-256 61433d225d008580d9628be2398c805543d2fd8fd5fb8534009191eedb76f467

See more details on using hashes here.

File details

Details for the file robotframework_zoomba-2.7.1-py3-none-any.whl.

File metadata

  • Download URL: robotframework_zoomba-2.7.1-py3-none-any.whl
  • Upload date:
  • Size: 48.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.1

File hashes

Hashes for robotframework_zoomba-2.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 75db7c9e4849ddae85d84947d5b95865c9642ce97f410d8bbd3c49c72b2ac601
MD5 9850c900977f25d7f6761eff3afb12e3
BLAKE2b-256 9fa104960b7743e72a01d3ab47de7cc19898b1c83c8d537e10d2f05a95e01daf

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page