Robot Framework Browser library powered by Playwright. Moving browser automation to year 2021!
Aiming for π speed, β reliability and π¬ visibility.
Only Python 3.7 or newer is supported.
- Install node.js e.g. from https://nodejs.org/en/download/ (only < v15 supported; if unsure, use 14.15.0 LTS)
- Update pip
pip install -U pip
to ensure latest version is used - Install robotframework-browser from the commandline:
pip install robotframework-browser
- Install the node dependencies: run
rfbrowser init
in your shell
- if
rfbrowser
is not found, trypython -m Browser.entry init
Or use the docker images. Documented at atest/docker/README.md.
To upgrade your already installed robotframework-browser library
- Update from commandline:
pip install -U robotframework-browser
- Install the node dependencies for the newly installed version:
rfbrowser init
Testing with Robot Framework
*** Settings ***
Library Browser
*** Test Cases ***
Example Test
New Page https://playwright.dev
Get Text h1 contains Playwright
and testing with Python.
import Browser
browser = Browser.Browser()
browser.new_page("https://playwright.dev")
assert 'Playwright' in browser.get_text("h1")
browser.close_browser()
async function myGoToKeyword(page, args) {
return await page.goto(args[0]);
}
exports.__esModule = true;
exports.myGoToKeyword = myGoToKeyword;
*** Settings ***
Library Browser jsextension=${CURDIR}/mymodule.js
*** Test Cases ***
Example Test
New Page
myGoToKeyword https://www.robotframework.org
# Select element containing text "Login" with text selector strategy
# and select it's parent `input` element with xpath
Click "Login" >> xpath=../input
# Select element with CSS strategy and select button in it with text strategy
Click div.dialog >> "Ok"
New Page ${LOGIN_URL}
${ref}= Get Element h1
Get Property ${ref} innerText == Login Page
Execute JavaScript (elem) => elem.innerText = "abc" ${ref}
Get Property ${ref} innerText == abc
# The button with id `delayed_request` fires a delayed request. We use a promise to capture it.
${promise}= Promise To Wait For Response matcher= timeout=3s
Click \#delayed_request
${body}= Wait For ${promise}
${device}= Get Device iPhone X
New Context &{device}
New Page
Get Viewport Size # returns { "width": 375, "height": 812 }
&{response}= HTTP /api/post POST {"name": "John"}
Should Be Equal ${response.status} ${200}
See CONTRIBUTING.md for development instructions.
In order of appearance.
- Mikko Korpela
- Tatu Aalto
- Janne HΓ€rkΓΆnen (Alumnus)
- Kerkko Pelttari
- RenΓ© Rohner
This project is community driven and becomes a reality only through the work of all the people who contribute. Supported by Robocorp through Robot Framework Foundation.