Wie kann ein Selen / Ruby-Bot warten, bevor er eine Aktion ausführt?

Ich erstelle einen Selenium / Ruby-Web-Bot, der auf Elemente klickt. Das Problem ist, dass manchmal nicht genügend Zeit zum Laden der Seite vorhanden ist, bevor der Bot feststellt, dass das Element nicht gefunden werden kann.

Auf welche Weise lässt Ruby Selen warten, bevor eine Aktion ausgeführt wird? Ich würde explizites Warten vorziehen, aber implizites Warten ist auch in Ordnung.

Ich habe versucht, das @ zu verwendwait.until Methode

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

Aber ich erhalte den folgenden Fehler:

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

Ich habe auch versucht:

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

, aber das gibt mir auch einen undefinierten Methodenfehler:

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

Antworten auf die Frage(14)

Ihre Antwort auf die Frage