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()