Ruby Selenium-如果nil=>;则查找元素;Net::读取超时
嗨,当没有这样的元素时,我每次使用Ruby Selenium-如果nil=>;则查找元素;Net::读取超时,ruby,selenium,find,elements,Ruby,Selenium,Find,Elements,嗨,当没有这样的元素时,我每次使用find_elements都得到了Net::ReadTimeout。我的功能文件的一个简短示例:(琥珀色) 我的ruby步骤文件: Given /^open website (.*)$/ do |url| $driver.navigate.to "http://www."+url $wait = Selenium::WebDriver::Wait.new(:timeout => 180) $wait.until { $driver.fi
find_elements
都得到了Net::ReadTimeout
。我的功能文件的一个简短示例:(琥珀色)
我的ruby步骤文件:
Given /^open website (.*)$/ do |url|
$driver.navigate.to "http://www."+url
$wait = Selenium::WebDriver::Wait.new(:timeout => 180)
$wait.until {
$driver.find_element(:css => "div[class='navbar-content']").displayed?
}
end
And /^search for (.*)$/ do |name|
element=$driver.find_element(:css => "input[placeholder='Search']")
element.send_keys name
sleep(1)
element.send_keys :enter
sleep(10)
#line199 items=$driver.find_elements(:id => "Games")
puts items.count
end
我得到的错误是:
Net::ReadTimeout:Net::ReadTimeout
./features/step\u definitions/basic\u steps.rb:199:in/^搜索(.*)$/'
./features/a_测试。功能:4:in
并搜索文明'
我非常感谢您的帮助。默认情况下,请求的超时时间设置为
60
秒。如果隐式等待设置设置大于此值,则如果未找到任何元素,则将获得Net::ReadTimeout
。您必须使隐式等待设置小于请求超时。谢谢,就是这样。
我将隐式等待更改为比ReadTimeout小2秒。看起来您正在使用隐式等待。当隐式等待大于0时,驱动程序在向客户端返回响应之前,至少等待一个具有
find_elements
的元素。因此,当它找不到任何元素时,您将得到一个连接超时。
Given /^open website (.*)$/ do |url|
$driver.navigate.to "http://www."+url
$wait = Selenium::WebDriver::Wait.new(:timeout => 180)
$wait.until {
$driver.find_element(:css => "div[class='navbar-content']").displayed?
}
end
And /^search for (.*)$/ do |name|
element=$driver.find_element(:css => "input[placeholder='Search']")
element.send_keys name
sleep(1)
element.send_keys :enter
sleep(10)
#line199 items=$driver.find_elements(:id => "Games")
puts items.count
end