2013-01-25 59 views
0

请按照下面的代码:driver.navigate.refresh不工作与硒的webdriver预期

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

请分享几行代码。 – Manigandan

+0

如果我错了,请让我清楚。到达'element:username'后,您将刷新前一页。 – Manigandan

+0

我的代码是错误的。直到'element:username'页面到来,我需要不断刷新前一页。 OMG! – CodeLover

回答

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。

+0

OMG!你给了什么解决方案?这正是我期待的那一个。非常感谢:) – CodeLover

+0

'retry'声明在这里会做什么? – CodeLover

+0

这意味着重新运行'begin'和'rescue'之间的代码。所以在这种情况下,它说在页面刷新后重试查找元素。 –