Keyword driven automation for the web
Project description
Keyword based test automation for the web.
Table of Contents
Introduction
QWeb is an open source web automation interface in Robot Framework. It makes automation rapid, robust, and fun.
QWeb aims to make web automation easy and maintainable by:
- providing high level keywords for accessing any web page element
- preferring text locators (UI texts) but supporting also other locator strategies (xpaths, css selectors)
- automatically handling latencies etc. via automatic wait times
- automatically handling unexpected alerts
- minimizing the maintenance effort
See examples.
Requirements
Python 3.6-3.9 and Robot Framework 3.2.2. Browser drivers need to be installed separately.
(Note that support on Mac excludes Apple based silicon (M1), since all dependencies are not yet available for it.)
Installation
Windows
pip install QWeb
Linux/Mac
python3 -m pip install -U pip
python3 -m pip install QWeb
Running the above command installs also supported Selenium and Robot Framework versions + other dependencies, but you still need to install browser drivers
separately. Please refer to Selenium documentation for more information on how to install browser drivers manually OR use 3rd party packages like WebDriverManager.
Usage
Keyword documentation
See list of keywords and their usage on
Examples
Basic usage
The preferred way to interact with web elements is using their text property. Most elements like input fields and dropdowns can also be found by closest label (text).
*** Settings ***
Library QWeb # Import library
*** Test Cases ***
Basic interaction
OpenBrowser https://qentinelqi.github.io/shop chrome # Open chrome and goto given url
VerifyText The animal friendly clothing company # Assert heading text
ClickText Scar the Lion # Click link text
ClickText Add to cart # Click *button* with specific text
DropDown Size Large # Select value (Large) from dropdown (Size)
Timeouts and anchors
# TIMEOUTS
# By default QWeb tries to locate the element 10 seconds (time can be configured)
ClickText Sign-in # Tries to locate and click text "Sign-in" until 10 seconds has passed or until element is found.
# Timeout can be controlled using argument
# Below example re-tries to find element until it's found or 30 seconds has passed. If element is not found after timeout, test will fail.
ClickText Sign-in timeout=30
# ANCHORS
# When multiple elements with same text are found,
# QWeb can be guided to interact with specific element
# using anchors and indexes
# clicks "Sign-in" text closest to text "Email"
ClickText Sign-in anchor=Email
# clicks the third "Sign-in" on a page
ClickText Sign-in index=3
Other locators
# ClickElement
# xpaths and css selectors are supported.
# Note that equal sign must be escaped
ClickElement xpath\=//button[@class="my_class"]
# ClickItem
# ClickItem finds element based on any unique attribute,
# in this particular case ALT texts
ClickItem Increment quantity
Working with tables
Consider the following table as an example:
# First focus on a table using any text in it (column header etc.)
UseTable Firstname
# Get row number based on content (or last row)
${row}= GetTableRow //last # returns 5
${row}= GetTableRow //last skip_header=True # returns 4
...
${row}= GetTableRow Jim # returns 4
${row}= GetTableRow Jim skip_header=True # returns 3
# Get value in specific cell
${cell_value}= GetCellText r1c2 # Returns "John", first name is column 2.
# Negative numbers as row number will count from the end of table
${cell_value}= GetCellText r-1/c2 # Returns "Tina", -1 points to last row
${cell_value}= GetCellText r-2/c2 # Returns "Jim", -2 points to second last row
Changing configuration
# QWeb's behavior can be configured with SetConfig keyword
# Highlight all found elements with blue rectangle
SetConfig SearchMode Draw
# Set automatic timeout time
SetConfig DefaultTimeout 60s # change default/automatic timeout for all keywords
VerifyText User account created # Re-tries to find text "User account created" 60 seconds and then fails, if text is not visible
Changelog
See RELEASE.md
Contribute
Found an bug? Want to propose a new feature or improve documentation? Please start by checking our contribution guide
License
Apache 2.0 License. See LICENSE.
More info
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.