Skip to main content

Browser Automation

The SDK includes a headless browser for web automation, scraping, and testing.

Create a browser session

from instavm import InstaVM

client = InstaVM('your_api_key')

session = client.browser.create_session(
viewport_width=1920,
viewport_height=1080
)

session.navigate("https://example.com")
screenshot = session.screenshot()
session.close()

Context manager

Automatic cleanup when the block exits:

with client.browser.create_session() as session:
session.navigate("https://example.com")
session.fill("input#email", "user@example.com")
session.click("button[type='submit']")
screenshot = session.screenshot()
session.navigate("https://example.com", wait_timeout=30000)

Clicking

session.click("button.submit", force=False, timeout=30000)

Typing and filling

# Type with keystroke delay
session.type("input#search", "search query", delay=100)

# Fill instantly (no keystroke simulation)
session.fill("input[name='email']", "user@example.com")

Scrolling

# Scroll element into view
session.scroll(selector="div.content")

# Scroll to coordinates
session.scroll(x=0, y=500)

Waiting

session.wait_for("load", timeout=30000)
session.wait_for("visible", selector="div.content", timeout=5000)

Screenshots

# Full page
screenshot_base64 = session.screenshot(full_page=True)

# Clipped region
screenshot_base64 = session.screenshot(
full_page=False,
clip={"x": 0, "y": 0, "width": 800, "height": 600}
)

Extracting data

elements = session.extract_elements(
selector="a",
attributes=["href", "text"]
)

for elem in elements:
print(f"{elem['text']}: {elem['href']}")

Browser manager

The client.browser manager auto-creates a default session if none exists:

client.browser.navigate("https://example.com")
client.browser.click("button.submit")
screenshot = client.browser.screenshot()
client.browser.close()

List sessions

sessions = client.list_browser_sessions()
for s in sessions:
print(f"Session: {s['session_id']}")

Configuration options

ParameterDefaultDescription
viewport_width1920Browser viewport width
viewport_height1080Browser viewport height
user_agentNoneCustom user agent string

Next steps