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()
Navigation
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
| Parameter | Default | Description |
|---|---|---|
viewport_width | 1920 | Browser viewport width |
viewport_height | 1080 | Browser viewport height |
user_agent | None | Custom user agent string |
Next steps
- Guide: Browser Automation -- end-to-end examples
- Error Handling -- browser-specific exceptions
- REST API: Browser -- API endpoints