Wait API
Wait for elements to appear using semantic conditions. The wait_for() / waitFor() function automatically optimizes polling intervals based on API usage.
Basic Usage
from predicate import wait_for, click
# Wait for button to appear
result = wait_for(browser, "role=button text~'Submit'", timeout=5.0)
ifParameters
Python:
browser(PredicateBrowser): Browser instanceselector(str): Query DSL selectortimeout(float): Maximum time to wait in seconds (default: 10.0)interval(float, optional): Polling interval in seconds. Auto-detects ifNone:- 0.25s for local extension (
use_api=False) - 1.5s for remote API (
use_api=True)
- 0.25s for local extension (
use_api(bool, optional): Force server API or local extension. Auto-detects ifNone.
TypeScript:
browser(PredicateBrowser): Browser instanceselector(string): Query DSL selectortimeout(number, optional): Max time in ms (default: 10000)interval(number, optional): Polling interval in msuseApi(boolean, optional): Force server or local
Returns
WaitResult with:
found: Whether element was foundelement: Element object (if found)duration_ms: Time taken in millisecondstimeout: Whether timeout occurred
Semantic Wait Conditions
You can use any query selector to wait for elements:
# Wait for clickable element
wait_for(browser, "clickable=true")
# Wait for important element
wait_for(browser, "importance>100")
# Wait for visible link
wait_for(browser, "role=link visible=true")
# Wait for specific text
wait_for(Auto-Optimized Polling
The wait function automatically adjusts polling intervals based on whether you're using the server API or local extension:
- Local extension (
use_api=False): Polls every 0.25 seconds (fast, no credits) - Server API (
use_api=True): Polls every 1.5 seconds (slower, but includes importance ranking)
This ensures efficient waiting while minimizing API calls when using server-side processing.
Complete Example
from predicate import PredicateBrowser, snapshot, wait_for, click
with PredicateBrowser(api_key="sk_...") as browser:
browser.page.goto("https://example.com")
# Wait for page to load (wait for any clickable element)
result =