VLearnVibium

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.

By Pramod Dutta··2 min read·Verified with Vibium 26.2
▶ Animated overview · made with Remotion

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.

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