Ruby Selenium - find_elements if nil =>网:: ReadTimeout

时间:2017-12-01 10:39:06

标签: ruby selenium find elements

嗨,每次我使用Net::ReadTimeout时,如果没有这样的元素,我就会find_elements。我的功能文件的简短示例:( cucamber)

Feature: Retest Faild Testcases
Scenario: Simpel test find_elements
    Given open website humblebundle.com
    And search for civilization

我的红宝石步骤文件:

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_definitions/basic_steps.rb:199:in /^search for (.*)$/' ./features/a_test.feature:4:in并寻找文明'

我非常感谢你对此有任何帮助。

2 个答案:

答案 0 :(得分:0)

默认情况下,请求的超时设置为60秒。如果您的隐式等待设置设置为大于此值,如果找不到任何元素,您将获得Net::ReadTimeout。您必须保持隐式等待设置小于请求超时。

答案 1 :(得分:0)

谢谢,就是这样。 我将隐式等待2个secends改为比我的ReadTimeout更小。