Capybara: Quick checking for element presence (without retries or timeout) Element finding is a central feature of Capybara. I use all of these inside a wait_for_readiness method (which wraps them in a Timeout.timeout(Capybara.default_wait_time)) which is called on every page load, as well as before and after every click of an element. I want to wait until an element on the page disappears before continuing. For my tests, this resulted in breaking any tests that queried any non-visible DOM elements, such as scripts, meta tags, and links. I want to wait untill an element is visible before WebDriver performs actions. Click(Element) I think Capybara already does wait for element to be visible before clicking with "click_button", so you can either try to -modify it to wait 'better' -add longer timeout or use better locators (are you 100% sure it is found? I think that the find statement here is the one with the implicit wait, so Capybara will wait until the element is on the page, but won’t wait for it to become visible. Capybara: Quick checking for element presence (without retries or timeout) Element finding is a central feature of Capybara. Selenium) will wait an amount of time until the expected element shows up. Repeats. Since #find is normally used to get elements from the current page and interact with them, it's a good thing that some Capybara drivers (e.g. If the driver dynamic pages (JS) and the element is currently non-interactable, this method will continuously retry the action until either the element becomes interactable or the maximum wait time expires. )-add your own waits somehow. 25 Capybara::Selenium::Driver.new app, browser: :chrome, desired_capabilities: capabilities 26 if you need to use custom domain , you can set host, but also set server port 27 you can read host and port However, the change from Capybara 2.0 to 2.1 had a big change in the way that it handles finding dom elements that are not visible. Here, you would want Capybara to wait for the visible element to appear, which should be achievable by specifying the visible option: Previously, Capybara would not care if the dom element was hidden. This is used in a Cucumber test suite of ~500 scenarios, and it has eliminated the need for any explicit sleeps anywhere in the suite. The reason for the element is not clickable at pointxy exception. Capybara automatically waits for asynchronous operations to complete. Ruby capybara element is not clickable at point. I use all of these inside a wait_for_readiness method (which wraps them in a Timeout.timeout(Capybara.default_wait_time)) which is called on every page load, as well as before and after every click of an element. Instead of giving time to sleep, you can use WebDriverWait method which is waiting until the web element is visible. This is because the Firefox can load the page little bit faster than the other, and when the other browsers look up the element, it not loaded yet. I think you should check the web element manually if you can reach it. I think that the find statement here is the one with the implicit wait, so Capybara will wait until the element is on the page, but won't wait for it to become visible. If the driver dynamic pages (JS) and the element is currently non-interactable, this method will continuously retry the action until either the element becomes interactable or the maximum wait time expires. Visible to the public. Both x: and y: must be specified if an offset is wanted, if not specified the click will occur at the middle of the element.