Skip to content

piyapsri/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.8 or later is supported.

  1. Install node.js e.g. from https://nodejs.org/en/download/
  2. Install robotframework-browser from the commandline: pip install robotframework-browser
  3. Install the node dependencies: run rfbrowser init in your shell

Examples

Testing with Robot Framework

*** Settings ***
Library   Browser

*** Test Cases ***
Example Test
    New Page    https://playwright.dev
    Get Text    h1    ==    🎭 Playwright

and testing with Python.

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

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 Attribute    ${ref}    innerText    ==    Login Page
Execute JavaScript    (elem) => elem.innerText = "abc"    ${ref}
Get Attribute    ${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
  • 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

💵

Finalrykku

📖

gdroes

⚠️

About

Robot Framework Browser library powered by Playwright.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 49.2%
  • TypeScript 28.6%
  • RobotFramework 17.9%
  • HTML 1.9%
  • JavaScript 1.2%
  • Dockerfile 1.1%
  • CSS 0.1%