Browser Automation
Control headless browsers on InstaVM for web scraping, testing, and automated workflows.
Quick start
from instavm import InstaVM
client = InstaVM("your_api_key")
with client.browser.create_session() as session:
session.navigate("https://example.com")
screenshot = session.screenshot()
print(f"Screenshot: {len(screenshot)} chars (base64)")
Navigation
session.navigate("https://example.com", wait_timeout=30000)
Form interaction
Fill and submit forms:
with client.browser.create_session() as session:
session.navigate("https://example.com/login")
session.fill("input[name='email']", "user@example.com")
session.fill("input[name='password']", "password123")
session.click("button[type='submit']")
session.wait_for("visible", selector=".dashboard")
Screenshots
# Full page
full = session.screenshot(full_page=True)
# Clipped region
clipped = session.screenshot(
full_page=False,
clip={"x": 0, "y": 0, "width": 800, "height": 600}
)
Data extraction
Extract structured data from pages:
with client.browser.create_session() as session:
session.navigate("https://news.ycombinator.com")
session.wait_for("load")
posts = session.extract_elements(
selector=".titleline > a",
attributes=["href", "text"]
)
for post in posts[:5]:
print(f"{post['text']}: {post['href']}")
Scrolling and waiting
# Scroll to load more content
session.scroll(y=1000)
# Wait for element to appear
session.wait_for("visible", selector="div.content", timeout=5000)
# Wait for page load
session.wait_for("load", timeout=30000)
Multi-page workflows
with client.browser.create_session() as session:
# Page 1: Search
session.navigate("https://example.com")
session.fill("input#search", "instavm")
session.click("button[type='submit']")
session.wait_for("visible", selector=".results")
# Page 2: Click first result
session.click(".results a:first-child")
session.wait_for("load")
# Extract content
content = session.extract_elements("article", ["text"])
print(content[0]["text"])
Error handling
from instavm import (
InstaVM,
ElementNotFoundError,
BrowserTimeoutError,
BrowserNavigationError
)
try:
session.click("button.nonexistent")
except ElementNotFoundError as e:
print(f"Element not found: {e}")
except BrowserTimeoutError as e:
print(f"Timed out: {e}")
except BrowserNavigationError as e:
print(f"Navigation failed: {e}")
TypeScript
import { InstaVM } from 'instavm';
const client = new InstaVM('your_api_key');
const session = await client.browser.createSession({
viewportWidth: 1920,
viewportHeight: 1080
});
await session.navigate('https://example.com');
const elements = await session.extractElements('h1', ['text']);
console.log(elements);
await session.close();
Next steps
- Python SDK: Browser Automation -- full method reference
- TypeScript SDK -- browser API in TypeScript
- REST API: Browser -- API endpoints