Как заставить бота Selenium / Ruby ждать перед выполнением действия?

Я создаю веб-бот Selenium / Ruby, который нажимает на элементы. Проблема в том, что иногда не хватает времени для загрузки страницы, прежде чем бот решит, что не может найти элемент.

Какой способ Ruby заставить Selenium ждать перед выполнением действия? Я бы предпочел явное ожидание, но я в порядке и с неявным ожиданием.

Я пытался использоватьwait.until метод:

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

Но я получаю следующую ошибку:

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

Я также попробовал:

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

но это также дает мне неопределенную ошибку метода:

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

Ответы на вопрос(7)

Ваш ответ на вопрос