¿Cómo hacer que un bot Selenium / Ruby espere antes de realizar una acción?

Estoy construyendo un bot web Selenium / Ruby que hace clic en elementos. El problema es que a veces no hay suficiente tiempo para que la página se cargue antes de que el bot decida que no puede encontrar el elemento.

¿Cuál es la forma de Ruby de hacer que Selenium espere antes de realizar una acción? Preferiría la espera explícita, pero también estoy bien con la espera implícita.

Traté de usar elwait.until método:

require "selenium-webdriver"
require "nokogiri"
driver = Selenium::WebDriver.for :chrome
wait = Selenium::WebDriver::Wait.new(:timeout => 15)
driver.navigate.to "http://google.com"
driver.wait.until.find_element(:class, "gb_P").click

Pero recibo el siguiente error:

Undefined method 'wait' for <Selenium::WebDriver>

También probé:

require "watir-webdriver/wait"
...
driver.find_element(:class, "gb_P").wait_until.click

pero eso también me da un error de método indefinido:

undefined method `when_present' for #<Selenium::WebDriver...>

Respuestas a la pregunta(7)

Su respuesta a la pregunta