Skip to content

LDerikx/robotframework-browser

Β 
Β 

Repository files navigation

robotframework-browser

All Contributors

Version Actions Status License


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.

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

and extending with JavaScript

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

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 xpath
Click    "Login" >> xpath=../input
# Select element with CSS strategy and select button in it with text strategy
Click    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 Page
Get 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

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 53.1%
  • TypeScript 21.4%
  • RobotFramework 20.1%
  • HTML 4.3%
  • JavaScript 0.8%
  • Dockerfile 0.3%