OakwoodAI/Automagica
Open Source RPA Robotic Process Automation
repo name | OakwoodAI/Automagica |
repo link | https://github.com/OakwoodAI/Automagica |
homepage | https://automagica.com |
language | Python |
size (curr.) | 89776 kB |
stars (curr.) | 2366 |
created | 2018-02-08 |
license | Other |
Automagica - Smart Robotic Process Automation
Automagica is a Smart Robotic Process Automation (SRPA) platform for fully automating tedious, manual tasks with software.
This repository is for the open source Python library, where all the Automagica building blocks are. With Automagica, automating cross-platform processes becomes a breeze. With this open source library we want to provide a comprehensive and consistent wrapper around known and lesser known automation libraries.
Refer to the Automagica official website for more information. Registered users can access the Automagica Portal. For more info see the documentation.
Important information
- We just launched the latest version of our Automagica Portal
- Check out our public roadmap and feel free to add suggestions to the Ideas column!
- We’re on Discord and Telegram
- You can now also run automations developed with UiPath, Blue Prism, Automation Anywhere, AutoIt and Robot Framework with the Automagica Portal!
Need expert support?
We can support you end-to-end in all your automation needs, from estimating automation potential for processes to technical implementation and integration. Please send an e-mail to sales@automagica.com for enquiries and rates.
Getting started
Installation
The easiest way to install Automagica is by using the installer for Windows which can be downloaded from the Automagica Portal.
Other OSes than Windows
Fedora-like distributions of Linux such as Red Hat Enterprise Linux or CentOS
You can install Automagica by running the following commands:
sudo yum install python3-devel chromium -y
sudo pip3 install automagica -U
Debian-like distributions of Linux such as Ubuntu
You can install Automagica by running the following commands:
sudo apt-get install python3-devel chromium -y
sudo pip3 install automagica -U
Important
If you would like to run browser automations, you also need to install Chromium or Chrome.
Developers and other platforms
If you wish to only install the Automagica Python library (without registering for the Automagica Portal), follow the below steps.
-
Download and install Python 3.7
-
Install the latest version Automagica on your machine:
pip install automagica --upgrade
Importing the activities
Before getting started in development mode, don’t forget to import the activities from automagica in your python script. If unsure, it is possible to import all the activities for development purposes by starting your script with:
from automagica import *
Examples
Try out the one-click examples:
- Webscraping in Chrome
- Read and write data in Excel
- Automatically make a PowerPoint presentation
- Change your Windows wallpaper
- Manipulate files and folders
- Use OCR to read images and click buttons
Browser working with Excel:
SAP Automation (Production example, sensitive information is blurred):
Folder and File manipulation
Docker Support (Experimental)
This is still under heavy development, but we’re exploring possibilities of running Automagica robots in a containerized desktop. You can try this with docker with the following commands:
git clone https://github.com/oakwoodai/automagica
cd automagica
docker build . -t automagica
docker run -it -p 8080:8080 automagica
Then browse to http://localhost:8080/vnc.html
Activities
An overview of all official Automagica activities:
Process | Description |
---|---|
Cryptography | |
Random key | Generate random Fernet key. Fernet guarantees that a message encrypted using it cannot be manipulated or read without the key. Fernet is an implementation of symmetric (also known as “secret key”) authenticated cryptography |
Encrypt text | Encrypt text with (Fernet) key, |
Decrypt text | Dexrypt bytes-like object to string with (Fernet) key |
Encrypt file | Encrypt file with (Fernet) key. Note that file will be unusable unless unlocked with the same key. |
Decrypt file | Decrypts file with (Fernet) key |
Key from password | Generate key based on password and salt. If both password and salt are known the key can be regenerated. |
Hash from file | Generate hash from file |
Hash from text | Generate hash from text |
Random | |
Random number | Random numbers can be integers (not a fractional number) or a float (fractional number). |
Random boolean | Generates a random boolean (True or False) |
Random name | Generates a random name. Adding a locale adds a more common name in the specified locale. Provides first name and last name. |
Random sentence | Generates a random sentence. Specifying locale changes language and content based on locale. |
Random address | Generates a random address. Specifying locale changes random locations and streetnames based on locale. |
Random beep | Generates a random beep, only works on Windows |
Random date | Generates a random date. |
Generate unique identifier | Generates a random UUID4 (universally unique identifier). While the probability that a UUID will be duplicated is not zero, it is close enough to zero to be negligible. |
User Input | |
Ask user for input | Prompt the user for an input with a pop-up window. |
Ask user for password | Prompt the user for a password. The password will be masked on screen while entering. |
Ask user for credentials | Prompt a popup which asks user for username and password and returns in plain text. Password will be masked. |
Shows message box | A pop-up message with title and message. |
Display overlay message | Display custom OSD (on-screen display) message. Can be used to display a message for a limited amount of time. Can be used for illustration, debugging or as OSD. |
Browser | |
Open Chrome Browser | Open the Chrome Browser with the Selenium webdriver. Canb be used to automate manipulations in the browser.Different elements can be found as: |
Save all images | Save all images on current page in the Browser |
Find elements by text | Find all elements by their text. Text does not need to match exactly, part of text is enough. |
Find element by text | Find one element by text. Text does not need to match exactly, part of text is enough. |
Find all links | Find all links on a webpage in the browser |
Find first link on a webpage | Find first link on a webpage |
Highlight element | Highlight elements in yellow in the browser |
Exit the browser | Quit the browser by exiting gracefully. One can also use the native ‘quit’ function |
Find all XPaths | Find all elements with specified xpath on a webpage in the the browser. Can also use native ‘find_elements_by_xpath’ |
Find XPath in browser | Find all element with specified xpath on a webpage in the the browser. Can also use native ‘find_elements_by_xpath’ |
Find class in browser | Find element with specified class on a webpage in the the browser. Can also use native ‘find_element_by_class_name’ |
Find class in browser | Find all elements with specified class on a webpage in the the browser. Can also use native ‘find_elements_by_class_name’ function |
Find element in browser based on class and text | Find all elements with specified class and text on a webpage in the the browser. |
Find id in browser | Find element with specified id on a webpage in the the browser. Can also use native ‘find_element_by_id’ function |
Credential Management | |
Set credential | Add a credential which stores credentials locally and securely. All parameters should be Unicode text. |
Delete credential | Delete a locally stored credential. All parameters should be Unicode text. |
Get credential | Get a locally stored redential. All parameters should be Unicode text. |
FTP | |
Create FTP connection | Can be used to automate activites for FTP |
Download file | Downloads a file from FTP server. Connection needs to be established first. |
Upload file | Upload file to FTP server |
List FTP files | Generate a list of all the files in the FTP directory |
Check FTP directory | Check if FTP directory exists |
Create FTP directory | Create a FTP directory. Note that sufficient permissions are present |
Keyboard | |
Press key | Press and release an entered key. Make sure your keyboard is on US layout (standard QWERTY).If you are using this on Mac Os you might need to grant acces to your terminal application. (Security Preferences > Security & Privacy > Privacy > Accessibility) |
Press key combination | Press a combination of two or three keys simultaneously. Make sure your keyboard is on US layout (standard QWERTY). |
Type text | Types text in the current active field by simulating keyboard typing. Make sure your keyboard is on US layout (standard QWERTY). |
Mouse | |
Get mouse coordinates | Get the x and y pixel coordinates of current mouse position.These coordinates represent the absolute pixel position of the mouse on the computer screen. The x-coördinate starts on the left side and increases going right. The y-coördinate increases going down. |
Display mouse position | Displays mouse position in an overlay. Refreshes every two seconds. Can be used to find mouse position of element on the screen.These coordinates represent the absolute pixel position of the mouse on the computer screen. The x-coördinate starts on the left side and increases going right. The y-coördinate increases going down. |
Mouse click | Clicks on a pixel position on the visible screen determined by x and y coordinates. |
Double mouse click | Double clicks on a pixel position on the visible screen determined by x and y coordinates. |
Right click | Right clicks on a pixel position on the visible screen determined by x and y coordinates. |
Move mouse | Moves te pointer to a x-y position. |
Move mouse relative | Moves the mouse an x- and y- distance relative to its current pixel position. |
Drag mouse | Drag the mouse from its current position to a entered x-y position, while holding a specified button. |
Image | |
Random screen snippet | Take a random square snippet from the current screen. Mainly for testing and/or development purposes. |
Screenshot | Take a screenshot of current screen. |
Click on image | This function searches the screen for a match with template image and clicks directly in the middle. Note that this only finds exact matches.For a more advanced and robust vision detection method see Automagica AI functionality. |
Double click image | Double click on similar image on the screen. This function searches the screen for a match with template image and doubleclicks directly in the middle.Note that this only finds exact matches. For a more advanced and robust vision detection method see Automagica AI functionality. |
Right click image | Right click on similar image on the screen. This function searches the screen for a match with template image and right clicks directly in the middle.Note that this only finds exact matches. For a more advanced and robust vision detection method see Automagica AI functionality. |
Locate image on screen | Find exact image on the screen. This function searches the screen for a match with template image and clicks directly in the middle.Note that this only finds exact matches. For a more advanced and robust vision detection method see Automagica AI functionality. |
Folder Operations | |
List files in folder | List all files in a folder (and subfolders)Checks all folders and subfolders for files. This could take some time for large repositories. |
Create folder | Creates new folder at the given path. |
Rename folder | Rename a folder |
Open a folder | Open a folder with the default explorer. |
Move a folder | Moves a folder from one place to another.If the new location already contains a folder with the same name, a random 4 character uid is added to the name. |
Remove folder | Remove a folder including all subfolders and files. For the function to work optimal, all files and subfolders in the main targetfolder should be closed. |
Empty folder | Remove all contents from a folderFor the function to work optimal, all files and subfolders in the main targetfolder should be closed. |
Checks if folder exists | Check whether folder exists or not, regardless if folder is empty or not. |
Copy a folder | Copies a folder from one place to another.If the new location already contains a folder with the same name, a random 4 character id is added to the name. |
Zip | Zia folder and it’s contents. Creates a .zip file. |
Unzip | Unzips a file or folder from a .zip file. |
Return most recent file in directory | Return most recent file in directory |
Delay | |
Wait | Make the robot wait for a specified number of seconds. Note that this activity is blocking. This means that subsequent activities will not occur until the the specified waiting time has expired. |
Wait for image | Waits for an image to appear on the screenNote that this activity waits for an exact match of the template image to appear on the screen.Small variations, such as color or resolution could result in a mismatch. |
Wait for folder | Waits until a folder exists.Not that this activity is blocking and will keep the system waiting. |
Word Application | |
Start Word Application | For this activity to work, Microsoft Office Word needs to be installed on the system. |
Append text | Append text at end of Word document. |
Replace text | Can be used for example to replace arbitrary placeholder value. For example whenusing template document, using ‘XXXX’ as a placeholder. Take note that all strings are case sensitive. |
Read all text | Read all the text from a document |
Export to PDF | Export the document to PDF |
Export to HTML | Export to HTML |
Set footers | Set the footers of the document |
Set headers | Set the headers of the document |
Quit Word | This closes Word, make sure to use ‘save’ or ‘save_as’ if you would like to save before quitting. |
Word File | |
Read and Write Word files | These activities can read, write and edit Word (docx) files without the need of having Word installed.Note that, in contrary to working with the :func: ‘Word’ activities, a file get saved directly after manipulation. |
Read all text | Read all the text from the document |
Append text | Append text at the end of the document |
Save | Save document |
Save as | Save file on specified path |
Set headers | Set headers of Word document |
Replace all | Replaces all occurences of a placeholder text in the document with a replacement text. |
Outlook Application | |
Start Outlook Application | For this activity to work, Outlook needs to be installed on the system. |
Send e-mail | Send an e-mail using Outlook |
Retrieve folders | Retrieve list of folders from Outlook |
Retrieve e-mails | Retrieve list of messages from Outlook |
Delete e-mails | Deletes e-mail messages in a certain folder. Can be specified by searching on subject, body or sender e-mail. |
Move e-mails | Move e-mail messages in a certain folder. Can be specified by searching on subject, body or sender e-mail. |
Save attachments | Save all attachments from certain folder |
Retrieve contacts | Retrieve all contacts |
Add a contact | Add a contact to Outlook contacts |
Quit | Close the Outlook application |
Excel Application | |
Start Excel Application | For this activity to work, Microsoft Office Excel needs to be installed on the system. |
Add worksheet | Adds a worksheet to the current workbook |
Activate worksheet | Activate a worksheet in the current Excel document by name |
Save | Save the current workbook |
Save as | Save the current workbook to a specific path |
Write cell | Write to a specific cell in the currently active workbook and active worksheet |
Read cell | Read a cell from the currently active workbook and active worksheet |
Write range | Write to a specific range in the currently active worksheet in the active workbook |
Read range | Read a range of cells from the currently active worksheet in the active workbook |
Run macro | Run a macro by name from the currently active workbook |
Get worksheet names | Get names of all the worksheets in the currently active workbook |
Get table | Get table data from the currently active worksheet by name of the table |
Activate range | Activate a particular range in the currently active workbook |
Activate first empty cell down | Activates the first empty cell going down |
Activate first empty cell right | Activates the first empty cell going right |
Activate first empty cell left | Activates the first empty cell going left |
Activate first empty cell up | Activates the first empty cell going up |
Write cell formula | Write a formula to a particular cell |
Read cell formula | Read the formula from a particular cell |
Insert empty row | Inserts an empty row to the currently active worksheet |
Insert empty column | Inserts an empty column in the currently active worksheet. Existing columns will shift to the right. |
Delete row in Excel | Deletes a row from the currently active worksheet. Existing data will shift up. |
Delete column | Delet a column from the currently active worksheet. Existing columns will shift to the left. |
Export to PDF | Export to PDF |
Insert data as table | Insert list of dictionaries as a table in Excel |
Read worksheet | Read data from a worksheet as a list of lists |
Quit Excel | This closes Excel, make sure to use ‘save’ or ‘save_as’ if you would like to save before quitting. |
Excel File | |
Read and Write xlsx files. | This activity can read, write and edit Excel (xlsx) files without the need of having Excel installed.Note that, in contrary to working with the :func: ‘Excel’ activities, a file get saved directly after manipulation. |
Export file to dataframe | Export to pandas dataframe |
Activate worksheet | Activate a worksheet. By default the first worksheet is activated. |
Save as | Save file as |
Write cell | Write a cell based on column and row |
Read cell | Read a cell based on column and row |
Add worksheet | Add a worksheet |
Get worksheet names | Get worksheet names |
PowerPoint Application | |
Start PowerPoint Application | For this activity to work, PowerPoint needs to be installed on the system. |
Save PowerPoint | Save PowerPoint Slidedeck |
Close PowerPoint Application | Close PowerPoint |
Add PowerPoint Slides | Adds slides to a presentation |
Slide count | Returns the number of slides |
Text to slide | Add text to a slide |
Delete slide | Delete a slide |
Replace all occurences of text in PowerPoint slides | Can be used for example to replace arbitrary placeholder value in a PowerPoint.For example when using a template slidedeck, using ‘XXXX’ as a placeholder.Take note that all strings are case sensitive. |
PowerPoint to PDF | Export PowerPoint presentation to PDF file |
Slides to images | Export PowerPoint slides to seperate image files |
Office 365 | |
Send email Office Outlook 365 | Send email Office Outlook 365 |
Salesforce | |
Salesforce API | Activity to make calls to Salesforce REST API. |
E-mail (SMTP) | |
Mail with SMTP | This function lets you send emails with an e-mail address. |
Windows OS | |
Find window with specific title | Find a specific window based on the name, either a perfect match or a partial match. |
Login to Windows Remote Desktop | Create a RDP and login to Windows Remote Desktop |
Stop Windows Remote Desktop | Stop Windows Remote Desktop |
Set Windows password | Sets the password for a Windows user. |
Check Windows password | Validates a Windows user password if it is correct |
Lock Windows | Locks Windows requiring login to continue. |
Check if Windows logged in | Checks if the current user is logged in and not on the lockscreen. Most automations do not work properly when the desktop is locked. |
Check if Windows is locked | Checks if the current user is locked out and on the lockscreen. Most automations do not work properly when the desktop is locked. |
Get Windows username | Get current logged in user’s username |
Set clipboard | Set any text to the Windows clipboard. |
Get clipboard | Get the text currently in the Windows clipboard |
Empty clipboard | Empty text from clipboard. Getting clipboard data after this should return in None |
Run VBSscript | Run a VBScript file |
Beep | Make a beeping sound. Make sure your volume is up and you have hardware connected. |
Get all network interface names | Returns a list of all network interfaces of the current machine |
Enable network interface | Enables a network interface by its name. |
Disable network interface | Disables a network interface by its name. |
Get default printer | Returns the name of the printer selected as default |
Set default printer | Set the default printer. |
Remove printer | Removes a printer by its name |
Get service status | Returns the status of a service on the machine |
Start a service | Starts a Windows service |
Stop a service | Stops a Windows service |
Set window to foreground | Sets a window to foreground by its title. |
Get foreground window title | Retrieve the title of the current foreground window |
Close window | Closes a window by its title |
Maximize window | Maximizes a window by its title |
Restore window | Restore a window by its title |
Minimize window | Minimizes a window by its title |
Resize window | Resize a window by its title |
Hide window | Hides a window from the user desktop by using it’s title |
Terminal | |
Run SSH command | Runs a command over SSH (Secure Shell) |
SNMP | |
SNMP Get | Retrieves data from an SNMP agent using SNMP (Simple Network Management Protocol) |
Active Directory | |
AD interface | Interface to Windows Active Directory through ADSI |
Get AD object by name | Interface to Windows Active Directory through ADSI |
Utilities | |
Get user home path | Returns the current user’s home path |
Get desktop path | Returns the current user’s desktop path |
Get downloads path | Returns the current user’s default download path |
Open file | Opens file with default programs |
Set wallpaper | Set Windows desktop wallpaper with the the specified image |
Download file from a URL | Download file from a URL |
Trello | |
Add Trello Card | Add a card to the Trello board. For this you need a Trello API key, secret and token. |
System | |
Rename a file | This activity will rename a file. If the the desired name already exists in the folder file will not be renamed. |
Move a file | If the new location already contains a file with the same name, a random 4 character uid will be added in front of the name before the file is moved. |
Remove a file | Remove a file |
Check if file exists | This function checks whether the file with the given path exists. |
Wait until a file exists. | Not that this activity is blocking and will keep the system waiting. |
List to .txt | Writes a list to a text (.txt) file.Every element of the entered list is written on a new line of the text file. |
Read .txt file | This activity writes the content of a .txt file to a list and returns that list.Every new line from the .txt file becomes a new element of the list. The activity willnot work if the entered path is not attached to a .txt file. |
Append to .txt | Append a text line to a file and creates the file if it does not exist yet. |
Make text file | Initialize text file |
Copy a file | Copies a file from one place to another.If the new location already contains a file with the same name, a random 4 character uid is added to the name. |
Get file extension | Get extension of a file |
Send file to default printer to priner. This activity sends a file to the printer. Make sure to have a default printer set up. | |
| |
Text from PDF | Extracts the text from a PDF. This activity reads text from a pdf file. Can only read PDF files that contain a text layer. |
Merge PDF | Merges multiple PDFs into a single file |
Extract page from PDF | Extracts a particular range of a PDF to a separate file. |
Extract images from PDF | Save a specific page from a PDF as an image |
Watermark a PDF | Watermark a PDF |
System Monitoring | |
CPU load | Get average CPU load for all cores. |
Count CPU | Get the number of CPU’s in the current system. |
CPU frequency | Get frequency at which CPU currently operates. |
CPU Stats | Get CPU statistics |
Memory statistics | Get memory statistics |
Disk stats | Get disk statistics of main disk |
Partition info | Get disk partition info |
Boot time | Get most recent boot time |
Uptime | Get uptime since last boot |
Image Processing | |
Show image | Displays an image specified by the path variable on the default imaging program. |
Rotate image | Rotate an image |
Resize image | Resizes the image specified by the path variable. |
Get image width | Get with of image |
Get image height | Get height of image |
Crop image | Crops the image specified by path to a region determined by the box variable. |
Mirror image horizontally | Mirrors an image with a given path horizontally from left to right. |
Mirror image vertically | Mirrors an image with a given path vertically from top to bottom. |
Process | |
Windows run | Use Windows Run to boot a processNote this uses keyboard inputs which means this process can be disrupted by interfering inputs |
Run process | Use subprocess to open a windows process |
Check if process is running | Check if process is running. Validates if given process name (name) is currently running on the system. |
Get running processes | Get names of unique processes currently running on the system. |
Kill process | Kills a process forcefully |
Optical Character Recognition (OCR) | |
Get text with OCR | This activity extracts all text from the current screen or an image if a path is specified. |
Find text on screen with OCR | This activity finds position (coordinates) of specified text on the current screen using OCR. |
Click on text with OCR | This activity clicks on position (coordinates) of specified text on the current screen using OCR. |
Double click on text with OCR | This activity double clicks on position (coordinates) of specified text on the current screen using OCR. |
Right click on text with OCR | This activity Right clicks on position (coordinates) of specified text on the current screen using OCR. |
UiPath | |
Execute a UiPath process | This activity allows you to execute a process designed with the UiPath Studio. All console output from the Write Line activity (https://docs.uipath.com/activities/docs/write-line) will be printed as output. |
AutoIt | |
Execute a AutoIt script | This activity allows you to run an AutoIt script. If you use the ConsoleWrite function (https://www.autoitscript.com/autoit3/docs/functions/ConsoleWrite.htm), the output will be presented to you. |
Robot Framework | |
Execute a Robot Framework test case | This activity allows you to run a Robot Framework test case. Console output of the test case will be printed. |
Blue Prism | |
Run a Blue Prism process | This activity allows you to run a Blue Prism process. |
Automation Anywhere | |
Run an Automation Anywhere task | This activity allows you to run an Automation Anywhere task. |
SAP GUI | |
Quit SAP GUI | Quits the SAP GUI completely and forcibly. |
Log in to SAP GUI | Logs in to an SAP system on SAP GUI. |
Click on a sAP GUI element | Clicks on an identifier in the SAP GUI. |
Get text from a SAP GUI element | Retrieves the text from a SAP GUI element. |
Set text of a SAP GUI element | Sets the text of a SAP GUI element. |
Highlights a SAP GUI element | Temporarily highlights a SAP GUI element |
Portal | |
Create a new job in the Automagica Portal | This activity creates a new job in the Automagica Portal for a given script. The bot performing this activity will need to be assigned to the script it creates a job for. |
Vision | |
Detect and click on an element with the Automagica Vision API | This activity allows the bot to detect and click on an element by using the Automagica Vision API with a provided sample ID. |
Detect and double click on an element with the Automagica Vision API | This activity allows the bot to detect and double click on an element by using the Automagica Vision API with a provided sample ID. |
Detect and right click on an element with the Automagica Vision API | This activity allows the bot to detect and right click on an element by using the Automagica Vision API with a provided sample ID. |
Detect and click on an element with the Automagica Vision API | This activity allows the bot to detect and click on an element by using the Automagica Vision API with a provided sample ID. |
Detect and click on an element with the Automagica Vision API | This activity allows the bot to detect and click on an element by using the Automagica Vision API with a provided sample ID. |
Detect and click on an element with the Automagica Vision API | This activity allows the bot to detect and click on an element by using the Automagica Vision API with a provided sample ID. |
|
Credits
Under the hood, Automagica is built on some of the greatest open source libraries. Within Automagica, the following libraries are currently included:
- requests
- PyAutoGUI
- Selenium
- PyWinAuto
- OpenPyXL
- python-docx
- pywin32
- PyPDF2
- Psutil
- py-trello
- plyer
- Pillow
- Faker
- Psutil
- Keyring
- PySimpleGUI
- Cryptography
- pyad
- jupyterlab
- Icons8 Line Awesome
- pysnmp and special thanks to quicksnmp
- pandas
Special contributor mentions
A special thanks goes out to all the above-mentioned libraries, repositories and contributers! :heart: