from __future__ import annotations import os import time from pathlib import Path from bench_ui import execute_javascript, get_element_rect, launch_window HTML = """ Bench UI Example

Bench UI Example

Hello from pywebview

Click the button

""" def main(): os.environ["CUA_BENCH_UI_DEBUG"] = "1" # Launch a window with inline HTML content pid = launch_window( html=HTML, title="Bench UI Example", width=800, height=600, ) print(f"Launched window with PID: {pid}") # Give the window a brief moment to render time.sleep(1.0) # Query the client rect of an element via CSS selector in SCREEN space rect = get_element_rect(pid, "#target", space="screen") print("Element rect (screen space):", rect) # Take a screenshot and overlay the bbox try: from PIL import ImageDraw, ImageGrab img = ImageGrab.grab() # full screen draw = ImageDraw.Draw(img) x, y, w, h = rect["x"], rect["y"], rect["width"], rect["height"] box = (x, y, x + w, y + h) draw.rectangle(box, outline=(255, 0, 0), width=3) out_path = Path(__file__).parent / "output_overlay.png" img.save(out_path) print(f"Saved overlay screenshot to: {out_path}") except Exception as e: print(f"Failed to capture/annotate screenshot: {e}") # Execute arbitrary JavaScript text = execute_javascript(pid, "window.__submitted") print("text:", text) if __name__ == "__main__": main()