RPA Framework

RPA Framework is a collection of open-source libraries and tools for Robotic Process Automation (RPA), and it is designed to be used with both Robot Framework and Python. The goal is to offer well-documented and actively maintained core libraries for Software Robot Developers.

The project is:

Links

Packages

From the above packages, rpaframework-core and rpaframework-recognition are support packages, which alone do not contain any libraries.

Libraries

The RPA Framework project currently includes the following libraries:

The x in the PACKAGE column means that library is included in the rpaframework package and for example. x,dialogs means that RPA.Dialogs library is provided in both the rpaframework and rpaframework-dialogs packages.

LIBRARY NAME

DESCRIPTION

PACKAGE

Archiving TAR and ZIP files

Display information to a user and request input.

Control browsers and automate the web

Newer way to control browsers

special (more below)

For date and time manipulations

Use Amazon AWS services

Use Microsoft Azure services

Use Google Cloud services

Common hashing and encryption operations

Interact with databases

Cross-platform desktop automation

Interact with the system clipboard

Read OS information and manipulate processes

Intelligent Document Processing wrapper

Intelligent Document Processing service

Intelligent Document Processing service

E-Mail operations (Exchange protocol)

E-Mail operations (IMAP & SMTP)

Control the Excel desktop application

Manipulate Excel files directly

Read and manipulate files and paths

Interact with FTP servers

Interact directly with web APIs

Access HubSpot CRM data objects

Control Java applications

Manipulate JSON objects

Authenticate using one-time passwords (OTP) & OAuth2

Notify messages using different services

Artificial Intelligence service

Control the Outlook desktop application

Read and create PDF documents

Use the Robocorp Process API

Use the Robocorp Work Items API

Use the Robocorp Secrets API

Use the Robocorp Asset Storage API

Control SAP GUI desktop client

Access Smartsheet sheets

Manipulate, sort, and filter tabular data

Control task execution

Twitter API interface

Alternative library for Windows automation

Control the Word desktop application

Installation of RPA.Browser.Playwright

The RPA.Browser.Playwright at the moment requires special installation, because of the package size and the post install step it needs to be fully installed.

Minimum required conda.yaml to install Playwright:

channels: - conda-forge dependencies: - python=3.9.16 - nodejs=16.14.2 - pip=22.1.2 - pip: - robotframework-browser==17.2.0 - rpaframework==24.1.2 rccPostInstall: - rfbrowser init 

Installation

Learn about installing Python packages at Installing Python Packages.

Default installation method with Robocorp Developer Tools using conda.yaml :

channels: - conda-forge dependencies: - python=3.9.16 - pip=22.1.2 - pip: - rpaframework==24.1.2 

To install all extra packages (including Playwright dependencies), you can use:

channels: - conda-forge dependencies: - python=3.9.16 - tesseract=4.1.1 - nodejs=16.14.2 - pip=22.1.2 - pip: - robotframework-browser==17.2.0 - rpaframework==24.1.2 - rpaframework-aws==5.2.8 - rpaframework-google==7.0.3 - rpaframework-recognition==5.1.2 rccPostInstall: - rfbrowser init 

Separate installation of AWS, Dialogs, PDF and Windows libraries without the main rpaframework :

channels: - conda-forge dependencies: - python=3.9.16 - pip=22.1.2 - pip: - rpaframework-aws==5.2.8 # included in the rpaframework as an extra - rpaframework-dialogs==4.0.4 # included in the rpaframework by default - rpaframework-pdf==7.1.5 # included in the rpaframework by default - rpaframework-windows==7.3.2 # included in the rpaframework by default 

Installation method with pip using Python venv:

python -m venv .venv source .venv/bin/activate pip install rpaframework

Python 3.8 or higher is required

Example

After installation the libraries can be directly imported inside Robot Framework:

*** Settings *** Library RPA.Browser.Selenium *** Tasks *** Login as user Open available browser https://example.com Input text id:user-name $USERNAME> Input text id:password $PASSWORD> 

The libraries are also available inside Python:

from RPA.Browser.Selenium import Selenium lib = Selenium() lib.open_available_browser("https://example.com") lib.input_text("id:user-name", username) lib.input_text("id:password", password) 

Support and contact

Contributing

Found a bug? Missing a critical feature? Interested in contributing? Head over to the Contribution guide to see where to get started.

Development

Repository development is Python based and requires at minimum Python version 3.8+ installed on the development machine. The default Python version used in the Robocorp Robot template is 3.9.16 so it is a good choice for the version to install. Not recommended versions are 3.7.6 and 3.8.1, because they have issues with some of the dependencies related to rpaframework . At the time the newer Python versions starting from 3.11 are also not recommended, because some of the dependencies might cause issues.

Repository development tooling is based on poetry and invoke. Poetry is the underlying tool used for compiling, building and running the package. Invoke is used for scripting purposes, for example for linting, testing and publishing tasks.

Before writing any code, please read and acknowledge our extensive Dev Guide.

First steps to start developing:

  1. initial poetry configuration
poetry config virtualenvs.path null poetry config virtualenvs.in-project true poetry config repositories.devpi "https://devpi.robocorp.cloud/ci/test" 
  1. git clone the repository
  2. create a new Git branch or switch to correct branch or stay in master branch
  3. poetry install which install package with its dependencies into the .venv directory of the package, for example packages/main/.venv
  4. if testing against Robocorp Robot which is using devdata/env.json
  5. poetry run python -m robot
  6. poetry run python
  7. invoke lint to make sure that code formatting is according to rpaframework repository guidelines. It is possible and likely that Github action will fail the if developer has not linted the code changes. Code formatting is based on black and flake8 and those are run with the invoke lint .
  8. the library documentation can be created in the repository root (so called “meta” package level). The documentation is built by the docgen tools using the locally installed version of the project, local changes for the main package will be reflected each time you generate the docs, but if you want to see local changes for optional packages, you must utilize invoke install-local --package using the appropriate package name (e.g., rpaframework-aws ). This will reinstall that package as a local editable version instead of from PyPI. Multiple such packages can be added by repeating the use of the --package option. In order to reset this, use invoke install --reset .
# Before [tool.poetry.dependencies] python = "^3.8" rpaframework =  path = "packages/main", extras = ["cv", "playwright", "aws"] > rpaframework-google = "^4.0.0" rpaframework-windows = "^4.0.0" # After [tool.poetry.dependencies] python = "^3.8" rpaframework =  path = "packages/main", extras = ["cv", "playwright"] > rpaframework-aws =  path = "packages/aws" > rpaframework-google = "^4.0.0" rpaframework-windows = "^4.0.0" 

Packaging and publishing are done after changes have been merged into master branch. All the following steps should be done within master branch.

  1. git pull latest changes into master branch
  2. in the package directory containing changes execute invoke lint and invoke test
  3. update pyproject.toml with new version according to semantic versioning
  4. update docs/source/releasenotes.rst with changes
  5. in the repository root (so called “meta” package level) run command poetry update
  6. git commit changed poetry.lock files (on meta and target package level), releasenotes.rst and pyproject.toml with message “PACKAGE. version x.y.z”
  7. git push
  8. invoke publish after Github action on master branch is all green

Some recommended tools for development