How to Click Elements in Vibium
Click buttons and links in Vibium with el.click(). Runnable Python examples plus how auto-waiting and actionability make clicks reliable.
To click an element in Vibium, find it and call click(), like vibe.find("button.submit").click(). Vibium scrolls the element into view and waits for it to be clickable before performing the click, so reliable clicks need no extra wait code.
How do I click a button or link?
Locate the element with find() and chain click() onto it. The same pattern works for buttons, links, menu items, and any clickable element.
from vibium import browser_sync as browser
vibe = browser.launch()
vibe.go("https://example.com")
# Click by CSS selector
vibe.find("a").click()
# Or find first, then click
button = vibe.find("button.submit")
button.click()
vibe.quit()You can also target by role and text in one call, which is handy when a selector is brittle:
vibe.find(role="button", text="Sign In").click()Why do I not need to wait before clicking?
Vibium runs actionability checks before every click, so you almost never write your own wait or retry logic. Before the click fires, the element must be visible, stable (its position has settled), enabled, and actually receiving pointer events.
That last check matters: Vibium hit-tests the click point and confirms the element itself is on top. If a loading spinner or cookie banner is covering the button, the check fails and Vibium keeps polling instead of clicking the wrong thing. It polls until the checks pass or the timeout (default 30 seconds) is reached.
# No manual wait needed — Vibium waits until the button is clickable
vibe.find("#checkout").click()How do I handle a click that times out?
A click raises a timeout when the element never becomes actionable within the limit. The usual causes are an element that stays hidden, a button that stays disabled, or an overlay sitting on top of your target.
Rather than retrying blindly, fix the root cause: dismiss the overlay, wait for the disabling condition to clear, or correct the selector if it points at the wrong node. Because Vibium already waits internally, adding sleep() calls usually hides the real problem instead of solving it. See Waiting and Actionability in Vibium for how the checks work.
Next steps
Frequently asked questions
How do I click an element in Vibium?
Find the element with find(), then call click() on it, like vibe.find('button.submit').click(). Vibium scrolls the element into view and waits for it to become actionable before clicking, so you rarely need to add your own waits or retries.
Do I need to wait before clicking in Vibium?
No. Vibium runs actionability checks before every click, confirming the element is visible, stable, enabled, and not covered by another element. It polls until those pass or the timeout is reached, so a plain click() already waits for the element to be ready.
Why does my Vibium click time out?
A click times out when the element never becomes actionable in time, usually because it stays hidden, disabled, or sits under an overlay such as a cookie banner or loading spinner. Fix the underlying state or dismiss the overlay, then the click will proceed.
Vibium is created by Jason Huggins. This is an independent tutorial — see the official Vibium site and GitHub repo for canonical docs.
Related guides
How to Find Elements in Vibium
Find elements in Vibium with find() using CSS or semantic selectors. Runnable Python examples, findAll, and how auto-waiting works.
3 min read→Commands & APIHow to Get Element Text in Vibium
Read an element's text in Vibium with el.text(). Runnable Python examples for reading headings, asserting content, and looping over results.
2 min read→Commands & APIHow to Navigate to a URL in Vibium (go)
Navigate to any URL in Vibium with vibe.go(url). Runnable Python examples for opening pages, chaining navigations, and what go() waits for.
2 min read→Commands & APIHow to Type Text into Inputs in Vibium
Type into text fields in Vibium with el.type(). Runnable Python examples for filling inputs, plus how auto-waiting keeps typing reliable.
2 min read→