请遵循以下代码:
driver.get "https://example.com/"
driver.find_element(:class, "button").submit
driver.navigate.refresh
wait = Selenium::WebDriver::Wait.new(:timeout => 10) # seconds
element = wait.until { driver.find_element(:name => "username") }
我写的代码一直记在我的脑海中,直到包含element : username
的页面出现,继续上一页刷新。但似乎我的代码不符合这个要求。因此脚本抛出错误如下“
错误 的
C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.27.2/lib/selenium/webdr
iver/common/wait.rb:57:in `until': timed out after 10 seconds (Unable to locate
element: {"method":"name","selector":"username"})} (Selenium::WebDriver::Error::
TimeOutError)
满足我的要求有什么好主意吗?
谢谢,
答案 0 :(得分:2)
我在selenium-webdriver中没有遇到过这样做的内置方法,所以我会做以下事情:
#Submit your first page
driver.get "https://example.com/"
driver.find_element(:class, "button").submit
#Refresh page until your element appears
end_time = Time.now + 10 #seconds
begin
element = driver.find_element(:name => "username")
rescue Selenium::WebDriver::Error::NoSuchElementError
if Time.now < end_time
driver.navigate.refresh
retry
end
end
基本上这是试图找到元素。如果找不到,则捕获异常,刷新页面并再次重试。重复此过程,直到达到时间限制hsa。