Skip to main content

Keyword driven automation for the web

Project description

QWeb

Keyword based test automation for the web.


License Python versions Release Windows Acceptance Linux Acceptance MacOS Acceptance Tested with

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.

Back To The Top


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.

Back To The Top


Usage

Keyword documentation

See list of keywords and their usage on

Back To The Top

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: Example table

# 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

Back To The Top


Changelog

See RELEASE.md

Back To The Top

Contribute

Found an bug? Want to propose a new feature or improve documentation? Please start by checking our contribution guide

Back To The Top

License

Apache 2.0 License. See LICENSE.

Back To The Top

More info


Project details


Download files

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

Source Distribution

QWeb-1.0.2.tar.gz (126.2 kB view hashes)

Uploaded Source

Built Distribution

QWeb-1.0.2-py3-none-any.whl (155.3 kB view hashes)

Uploaded Python 3

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