【发布时间】:2016-06-16 03:49:21
【问题描述】:
我正在构建一个单击元素的 Selenium/Ruby 网络机器人。问题是,有时在机器人决定它找不到元素之前没有足够的时间加载页面。
在执行操作之前让 Selenium 等待的 Ruby 方法是什么?我更喜欢显式等待,但我也可以接受隐式等待。
我尝试使用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...>
【问题讨论】:
-
如果你刚刚开始,切换到水豚。 Capybara 默认等待,在后台使用 selenium(或其他驱动程序),API 易于使用。
标签: ruby selenium selenium-webdriver webdriver bots