robocorp-browser
The robocorp-browser package is a light wrapper for the Playwright -project, with quality-of-life improvements, such as automatic lifecycle management for Playwright objects (meant to be used with robocorp-tasks).
Usage
đ Check that you have added the dependency in your configuration; this library is not part of the robocorp bundle.
- conda.yaml for automation Task Packages
 - package.yaml for automation Action Packages
 - requirements.txt, pyproject.toml, setup.py|cfg etc. for the rest
 
from robocorp import browser, vault
from robocorp.tasks import task
@task
def automate_browser():
    """Start a browser to login in the surfed page."""
    # The configuration is used to set the basic `robocorp.browser` settings.
    # It must be called before calling APIs that create Playwright objects.
    browser.configure(
        # NOTE: `screenshot="only-on-failure"` is the default.
        # If this function finishes with an exception, it will make a screenshot and
        #  embed it into the logs.
        screenshot="only-on-failure",
        # By default, `headless` is False, unless running in a Linux container
        #  without a DISPLAY/WAYLAND_DISPLAY environment variable, but it
        #  can also be manually overridden.
        headless=True,  # won't display the browser window
        # Interactions may be run in slow motion (given in milliseconds).
        slowmo=100,
    )
    # The `browser.goto()` call may be used as a shortcut to get the current page and
    #  surf some URL (it may create the browser if not created already).
    browser.goto("https://example.com>")
    _login()  # call the login instructions
def _login():
    # APIs in `robocorp.browser` return the same browser instance, which is
    #  automatically closed when the task finishes.
    page = browser.page()
    # `robocorp.vault` is recommended for managing secrets.
    account = vault.get_secret("default-account")
    # Use the Playwright Browser API as usual to interact with the web elements.
    page.fill('//input[@ng-reflect-name="password"]', account["password"])
    page.click("input:text('Submit')")
đ Get started with our template now!
Changelog
A list of releases and corresponding changes can be found in the changelog.