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 predicateSnapshot object (will use snapshot.elements)Element objects (from snapshot.elements)target_element_id is specified)is_primary=true)importance scorefrom predicate import PredicateBrowser, snapshot, show_overlay
browser = PredicateBrowser()
browser.start()
browser.page.goto("https://example.com")
# Take snapshot once
snap = snapshot(browser)Show overlay with specific elements or highlight a target element in red:
from predicate import PredicateBrowser, snapshot, show_overlay, find
browser = PredicateBrowser()
browser.start()
browser.page.goto("https://example.com")
# Take snapshot
snap = snapshot(Manually clear the visual overlay before the 5-second auto-clear.
from predicate import clear_overlay
clear_overlay(browser)from predicate import PredicateBrowser, snapshot, show_overlay, clear_overlay
import time
browser = PredicateBrowser()
browser.start()
browser.page.goto("https://example.com")
snap = snapshot(You can also show overlays automatically when taking snapshots:
from predicate import PredicateBrowser, snapshot, SnapshotOptions
import time
browser = PredicateBrowser()
browser.start()
browser.page.goto("https://example.com")
# Automatically show overlay during snapshot
snap =Use visual overlay to debug why an element isn't being detected:
from predicate import PredicateBrowser, snapshot, show_overlay, find, clear_overlay
import time
browser = PredicateBrowser()
browser.start()
browser.page.goto("https://example.com")
# Show overlay to see what's detectedWhen an element isn't found, use overlay to see what Predicate 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