Visualize detected elements directly in the browser with color-coded borders and importance indicators. Perfect for debugging element detection, understanding importance scoring, and verifying critical UI elements.
The Visual Overlay API displays a visual overlay highlighting elements in the browser without taking a new snapshot. This is useful for:
Display a visual overlay highlighting elements in the browser with color-coded borders.
from sentience import show_overlay
show_overlay(browser, elements, target_element_id=None)Snapshot object (will use snapshot.elements)Element objects (from snapshot.elements)target_element_id is specified)is_primary=true)importance scorefrom sentience import SentienceBrowser, snapshot, show_overlay
browser = SentienceBrowser()
browser.start()
browser.page.goto("https://example.com")
# Take snapshot once
snap = snapshot(browser)
# Show overlay anytime without re-snapshotting
show_overlay(browser, snap)
# Wait to inspect the overlay (auto-clears after 5 seconds)
import time
time.sleep(6)
browser.close()Show overlay with specific elements or highlight a target element in red:
from sentience import SentienceBrowser, snapshot, show_overlay, find
browser = SentienceBrowser()
browser.start()
browser.page.goto("https://example.com")
# Take snapshot
snap = snapshot(browser)
# Option 1: Show all elements from snapshot
show_overlay(browser, snap)
# Option 2: Show only specific elements
show_overlay(browser, snap.elements)
# Option 3: Highlight a specific target element in red
button = find(snap, "role=button text~'Submit'")
if button:
show_overlay(browser, snap, target_element_id=button.id)
# The submit button will be highlighted in red
browser.close()Manually clear the visual overlay before the 5-second auto-clear.
from sentience import clear_overlay
clear_overlay(browser)from sentience import SentienceBrowser, snapshot, show_overlay, clear_overlay
import time
browser = SentienceBrowser()
browser.start()
browser.page.goto("https://example.com")
snap = snapshot(browser)
# Show overlay
show_overlay(browser, snap)
# Do some analysis for 2 seconds
time.sleep(2)
# Clear immediately when done (before 5-second auto-clear)
clear_overlay(browser)
browser.close()You can also show overlays automatically when taking snapshots:
from sentience import SentienceBrowser, snapshot, SnapshotOptions
import time
browser = SentienceBrowser()
browser.start()
browser.page.goto("https://example.com")
# Automatically show overlay during snapshot
snap = snapshot(browser, SnapshotOptions(show_overlay=True))
# Overlay is displayed immediately
# Wait 6 seconds to inspect (overlay auto-clears after 5 seconds)
time.sleep(6)
browser.close()Use visual overlay to debug why an element isn't being detected:
from sentience import SentienceBrowser, snapshot, show_overlay, find, clear_overlay
import time
browser = SentienceBrowser()
browser.start()
browser.page.goto("https://example.com")
# Show overlay to see what's detected
snap = snapshot(browser)
show_overlay(browser, snap)
print(f"Found {len(snap.elements)} elements")
# Wait to inspect the overlay
time.sleep(6)
# Try to find a specific button
button = find(snap, "role=button text~'Submit'")
if not button:
print("❌ Button not found - check the overlay to see what's detected")
print("Top 5 elements by importance:")
for i, elem in enumerate(snap.elements[:5]):
print(f" {i+1}. [{elem.id}] {elem.role}: {elem.text[:50]} (importance: {elem.importance})")
else:
print(f"✅ Found button: {button.text}")
# Highlight the target button in red
show_overlay(browser, snap, target_element_id=button.id)
time.sleep(3)
clear_overlay(browser)
browser.close()When an element isn't found, use overlay to see what Sentience detects:
# Check if critical buttons are detected
snap = snapshot(browser)
show_overlay(browser, snap)
time.sleep(6)
# Verify login button is present
login_btn = find(snap, "role=button text~'login'")
if not login_btn:
print("⚠️ Login button not detected - check overlay!")
See which elements rank highest on a complex page:
# Show overlay with importance badges
snap = snapshot(browser)
show_overlay(browser, snap)
# Print top 10 elements by importance
for elem in snap.elements[:10]:
print(f"{elem.importance}: {elem.role} - {elem.text[:40]}")
Highlight which element the agent will interact with:
# Find target element
snap = snapshot(browser)
target = find(snap, "role=button text~'Add to Cart'")
# Show what the agent sees (target in red)
show_overlay(browser, snap, target_element_id=target.id)
time.sleep(3)
# Proceed with action
click(browser, target.id)
Verify critical UI elements are always detected:
# List of critical elements to verify
critical_elements = [
"role=button text~'Checkout'",
"role=link text~'Cart'",
"role=textbox text~'Search'"
]
snap = snapshot(browser)
show_overlay(browser, snap)
for selector in critical_elements:
elem = find(snap, selector)
if not elem:
print(f"❌ MISSING: {selector}")
else:
print(f"✅ Found: {elem.text}")
show_overlay() separately when you want to re-visualize elements without re-snapshottingfind() or query() to highlight specific filtered elementsheadless=False temporarily for debuggingshow_overlay=True option