Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Selenium-如果nil=>;则查找元素;Net::读取超时_Ruby_Selenium_Find_Elements - Fatal编程技术网

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