Status: ✅ Week 1 Complete
Python SDK for Sentience AI Agent Browser Automation.
cd sdk-python
pip install -e .
# Install Playwright browsers (required)
playwright install chromiumfrom sentience import SentienceBrowser, snapshot, find, click
# Start browser with extension
with SentienceBrowser(headless=False) as browser:
browser.page.goto("https://example.com")
browser.page.wait_for_load_state("networkidle")
# Take snapshot
snap = snapshot(browser)
print(f"Found {len(snap.elements)} elements")
# Find and click a link
link = find(snap, "role=link")
if link:
result = click(browser, link.id)
print(f"Click success: {result.success}")SentienceBrowser- Launch Playwright with extension loaded- Automatic extension loading and verification
snapshot(browser, options)- Capture page state- Pydantic models for type safety
snapshot.save(filepath)- Save to JSON
read(browser, format="text|markdown")- Read page content as text or markdown- Enhanced markdown conversion using
markdownify(better than extension's lightweight conversion) - Supports
enhance_markdown=Trueto use improved conversion
- Enhanced markdown conversion using
screenshot(browser, format="png|jpeg", quality=80)- Capture standalone screenshot- Returns base64-encoded data URL
- Supports PNG and JPEG formats with quality control
query(snapshot, selector)- Find elements matching selectorfind(snapshot, selector)- Find single best match- String DSL:
"role=button text~'Sign in'" - 📖 Complete DSL Query Guide - Comprehensive documentation with all operators, fields, and examples
click(browser, element_id)- Click elementtype_text(browser, element_id, text)- Type into elementpress(browser, key)- Press keyboard key
wait_for(browser, selector, timeout)- Wait for elementexpect(browser, selector)- Assertion helper.to_exist().to_be_visible().to_have_text(text).to_have_count(n)
-
read(browser, format="raw|text|markdown")- Read page content- Default format:
"raw"- Returns HTML suitable for Turndown/markdownify format="raw"- Get cleaned HTMLformat="markdown"- Get high-quality markdown (uses markdownify internally)format="text"- Get plain text
Examples:
from sentience import read # Get raw HTML (default) result = read(browser) html = result["content"] # Get high-quality markdown (uses markdownify automatically) result = read(browser, format="markdown") markdown = result["content"]
See
examples/read_markdown.pyfor complete examples. - Default format:
See examples/ directory:
hello.py- Extension bridge verificationbasic_agent.py- Basic snapshotquery_demo.py- Query enginewait_and_click.py- Wait and actionsread_markdown.py- Reading page content and converting to markdown
from sentience import SentienceBrowser, read
with SentienceBrowser() as browser:
browser.page.goto("https://example.com")
browser.page.wait_for_load_state("networkidle")
# Read as enhanced markdown (better quality)
result = read(browser, format="markdown", enhance_markdown=True)
print(result["content"]) # High-quality markdownfrom sentience import SentienceBrowser, screenshot
import base64
with SentienceBrowser() as browser:
browser.page.goto("https://example.com")
browser.page.wait_for_load_state("networkidle")
# Capture PNG screenshot
data_url = screenshot(browser, format="png")
# Save to file
image_data = base64.b64decode(data_url.split(",")[1])
with open("screenshot.png", "wb") as f:
f.write(image_data)pytest tests/- 📖 Query DSL Guide - Complete guide to the semantic query language
- API Contract:
../spec/SNAPSHOT_V1.md - Type Definitions:
../spec/sdk-types.md