Skip to main content

Examples

Selenium

Make sure you have the selenium package installed in your environment.

Basic usage

import os
from selenium import webdriver

ABSTRA_SELENIUM_URL = os.getenv("ABSTRA_SELENIUM_URL")

if ABSTRA_SELENIUM_URL:
options = webdriver.ChromeOptions()
options.add_argument("--no-sandbox")
driver = webdriver.Remote(
command_executor=ABSTRA_SELENIUM_URL, options=options
)
else:
driver = webdriver.Chrome()

driver.get("https://abstra.io")
driver.save_screenshot("/tmp/screenshot.png")
driver.quit()

Downloading files

import os
from selenium import webdriver

ABSTRA_SELENIUM_URL = os.getenv("ABSTRA_SELENIUM_URL")


def get_driver():
if ABSTRA_SELENIUM_URL:
options = webdriver.ChromeOptions()
options.add_argument("--no-sandbox")
options.set_capability("se:downloadsEnabled", True)
return webdriver.Remote(
command_executor=ABSTRA_SELENIUM_URL, options=options
)
else:
return webdriver.Chrome()


driver = get_driver()

driver.get("https://example.com/some-file.pdf")

# Download files (cloud only)
if ABSTRA_SELENIUM_URL:
files = driver.get_downloadable_files()
print(f"Downloadable files: {files}")
driver.download_file(files[0], "downloads/")

driver.quit()

Playwright

Make sure you have the playwright package installed in your environment.

info

In the cloud, Playwright automatically connects through Selenium Grid via the SELENIUM_REMOTE_URL environment variable. No code changes are needed — playwright.chromium.launch() works both locally and in production.

Basic usage

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()

page.goto("https://abstra.io")
page.screenshot(path="/tmp/screenshot.png")

browser.close()

Web scraping

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()

page.goto("https://example.com")

title = page.title()
content = page.text_content("body")
links = page.eval_on_selector_all("a", "els => els.map(el => el.href)")

print(f"Title: {title}")
print(f"Links: {links}")

browser.close()

Filling forms

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()

page.goto("https://example.com/login")
page.fill('input[name="username"]', "user@example.com")
page.fill('input[name="password"]', "secret")
page.click('button[type="submit"]')

page.wait_for_url("**/dashboard")
print(f"Logged in: {page.url}")

browser.close()