Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.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 无头Firefox Watir WebDriver cukes上的读取超时_Ruby_Linux_Jenkins_Cucumber_Watir Webdriver - Fatal编程技术网

Ruby 无头Firefox Watir WebDriver cukes上的读取超时

Ruby 无头Firefox Watir WebDriver cukes上的读取超时,ruby,linux,jenkins,cucumber,watir-webdriver,Ruby,Linux,Jenkins,Cucumber,Watir Webdriver,我今天开始遇到很多这样的错误: Net::ReadTimeout (Net::ReadTimeout) /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:158:in `rescue in rbuf_fill' /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:152:in `rbuf_fill'

我今天开始遇到很多这样的错误:

Net::ReadTimeout (Net::ReadTimeout)
      /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:158:in `rescue in rbuf_fill'
      /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:152:in `rbuf_fill'
      /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil'
      /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:144:in `readline'
      /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http/response.rb:39:in `read_status_line'
      /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http/response.rb:28:in `read_new'
      /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1405:in `block in transport_request'
      /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1402:in `catch'
      /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1402:in `transport_request'
      /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1375:in `request'
      /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1368:in `block in request'
      /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:851:in `start'
      /usr/local/rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/http.rb:1366:in `request'
我在Firefox21上运行headless(通过headless gem)Watir WebDriver cukes,这是Ubuntu服务器。以下是激活的宝石束:

Gems included by the bundle:
  * builder (3.2.2)
  * bundler (1.3.5)
  * childprocess (0.3.9)
  * cucumber (1.3.2)
  * cwtestgen (0.1.6)
  * data_magic (0.14)
  * diff-lcs (1.2.4)
  * faker (1.1.2)
  * ffi (1.8.1)
  * gherkin (2.12.0)
  * headless (1.0.1)
  * i18n (0.6.4)
  * multi_json (1.7.5)
  * page-object (0.8.10)
  * page_navigation (0.9)
  * require_all (1.2.1)
  * rspec (2.13.0)
  * rspec-core (2.13.1)
  * rspec-expectations (2.13.0)
  * rspec-mocks (2.13.1)
  * rubyzip (0.9.9)
  * selenium-webdriver (2.33.0)
  * syntax (1.0.0)
  * thor (0.18.1)
  * watir-webdriver (0.6.4)
  * watir-webdriver-performance (0.2.2)
  * websocket (1.0.7)
  * yml_reader (0.2)

我甚至不知道从哪里开始解决这个问题。超时是随机的。当我在OSX上的Firefox21上运行这些测试时,它们不会发生(不是headless)。以前有人经历过吗?非常感谢您提出的任何想法——谢谢

我在别人的机器上看到过这一点,并花了一点时间对其进行诊断

在这种特殊情况下,Ruby版本管理器的问题似乎有些混乱,这意味着一些为旧版本Ruby编译的gem正在被采用

我们吹走了他们的宝石,重新安装了宝石,一切又开始可靠地工作了


这可能不是你的问题,但对其他人来说值得一提。Ruby版本管理是,但它仍然太容易把事情弄得一团糟。

我遇到了这个问题。我不知道为什么会这样,但我找到了解决办法。我只是终止watir浏览器,然后重试。问题是watir断开了与浏览器的连接,因此无法终止连接。我认为这是最初问题的一部分。为了终止watir浏览器,我用YAML转储浏览器对象,然后解析结果以找到模拟浏览器的pid。完成后,kill命令被发送到正确的pid。最后重新初始化浏览器和headless

tryLeft = 3
begin
  @watir.goto url
rescue => error
  tryLeft -= 1

  if tryLeft >= 0
    sleep 1
    retry
  end

  begin
    Timeout::timeout(2) { @watir.close }
  rescue
    File.open(@tmpDumpFile, 'w') { |file| file << YAML::dump(@watir) }
    `awk '/pid:/ {print $2;}' "#{@tmpDumpFile}" | xargs -rt kill 2>&1`
    FileUtils.rm_f(@tmpDumpFile)
  end

  @headless.stop
  `killall Xvfb 2>&1`

  # Reinitialize @watir / @headless then retry
end
tryLeft=3
开始
@watir.goto网址
rescue=>错误
tryLeft-=1
如果tryLeft>=0
睡眠1
重试
结束
开始
超时::超时(2){@watir.close}
营救
open(@tmpDumpFile,'w'){| File | File&1`
FileUtils.rm_f(@tmpDumpFile)
结束
@无头停车
`killall Xvfb 2>&1`
#重新初始化@watir/@headless,然后重试
结束

我从未找出这个问题的原因,但最终它消失了。我已经有好几天没有看到这个错误了。下次我看到它时,我将与我们的系统管理员一起尝试解决它,如果我们找到问题的根源,我将更新这个线程。嘿,你找到原因了吗?我遇到了同样的问题。Ive以前有过这个问题。我的问题是超时问题。我与我的ISP的连接出现问题。在我的ISP修复后,他们消失了。我猜线路上有静电。下次出现这种情况时,尝试使用phantomjs,看看两者之间是否有更好的区别。我也看到过它们……有时,几天甚至几天都没有错误几周后,突然:ReadTimeout:(我最终拯救了这个例外:-/