Skip to content

Repository files navigation

robotframework-browser

All Contributors

VersionActions StatusLicense


Robot Framework Browser library powered by Playwright. Moving browser automation to year 2020 (or 2021)!

Aiming for 🚀 speed, ✅ reliability and 🔬 visibility.

See keyword documentation.

Installation instructions

Only Python 3.7 or newer is supported.

  1. Install node.js e.g. from https://nodejs.org/en/download/ (only < v15 supported; if unsure, use 14.15.0 LTS)
  2. Install robotframework-browser from the commandline: pip install robotframework-browser
  3. Install the node dependencies: run rfbrowser init in your shell
  • if rfbrowser is not found, try python -m Browser.entry init

Or use the docker images. Documented at atest/docker/README.md.

Update instructions

To upgrade your already installed robotframework-browser library

  1. Update from commandline: pip install -U robotframework-browser
  2. Install the node dependencies for the newly installed version: rfbrowser init

Examples

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.

importBrowserbrowser=Browser.Browser()
browser.new_page("https://playwright.dev")
assert'Playwright'inbrowser.get_text("h1")
browser.close_browser()

and extending with JavaScript

asyncfunctionmyGoToKeyword(page,args){returnawaitpage.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

Ergonomic selector syntax, supports chaining of text, css and xpath selectors

# Select element containing text "Login" with text selector strategy # and select it's parent `input` element with xpathClick "Login" >> xpath=../input
# Select element with CSS strategy and select button in it with text strategyClick div.dialog >> "Ok"

Evaluate in browser page

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

Asynchronously waiting for HTTP requests and responses

# 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 Descriptors

${device}= Get Device iPhone X
New Context&{device}New PageGet Viewport Size # returns { "width": 375, "height": 812 }

Sending HTTP requests and parsing their responses

&{response}= HTTP /api/post POST {"name": "John"}
Should Be Equal${response.status}${200}

Development

See CONTRIBUTING.md for development instructions.

Core team

In order of appearance.

  • Mikko Korpela
  • Tatu Aalto
  • Janne Härkönen (Alumnus)
  • Kerkko Pelttari
  • René Rohner

Contributors

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.


Mikko Korpela

💻

Tatu Aalto

💻

Antti Karjalainen

🔍

Ismo Aro

🔍

Janne Härkönen

💻

Kerkko Pelttari

💻

Robocorp

💵

René

💻

Bryan Oakley

🤔

Tanakiat Srisaranyakul

🤔

Maaret Pyhäjärvi

📓

Karlo Smid

📓

Frank Schimmel

📓

Christoph

⚠️

Mika Hänninen

💬

imbus

💵

Niklas

📖

gdroes

⚠️

Reaktor

💵

Adrian Yorke

📖👀

Nanakawa

⚠️

Ed Manlove

📖

Brian Tsao

🐛📓

charis

💻

s-galante

🐛

Simon Meggle

📓

Anna-Gunda

🐛

anton264

📓

emakaay

🐛

Nea Ohvo

🐛

Elout van Leeuwen

📖

About

Robot Framework Browser library powered by Playwright.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages