Watir + Cucumber Connection拒绝了

时间:2012-01-26 18:25:41

标签: ruby cucumber watir watir-webdriver

伙计们,我在测试中使用了watir + cucumber,而且我正在重用浏览器实例的每个功能,就是我创建了@@browser = Watir::Browser.new的实例,然后通过我的测试重用它,我是使用watir-webdriver,我的测试运行良好,直到现在,我只是添加了另一个场景,我一直收到以下错误消息:

Connection refused - connect(2) (Errno::ECONNREFUSED)
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `initialize'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `open'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `connect'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:53:in `timeout'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:93:in `timeout'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `connect'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:553:in `do_start'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:542:in `start'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1035:in `request'

2 个答案:

答案 0 :(得分:0)

只需在env.rb文件中创建一个名为@browser的实例变量,然后就可以在黄瓜步骤中通过@browser访问它。

答案 1 :(得分:0)

我今天跑到同一个问题,我花了很多时间分析它。

仅适用于资源管理器和Chrome

最后,我的结论如下:

  • 要在Cucumber测试后关闭浏览器,我使用了at_exit全局钩子(按照http://cukes.info中的建议)。
  • 我看到Watir-webdriver(也可能是Selenium)连接相同的钩子来关闭chomedriver.exe进程(或类似于IE)。
  • 经过一些试验(也许是因为我没有深入的Ruby经验),我发现你用来链接到at_exit的顺序是至关重要的。

由于退出事件已通知webdriver,其进程已关闭,但您的结束例程已被执行,尝试执行相同操作,但它发现webdriver已关闭,因此它返回一个exeception并使软件界面仍处于打开状态。 所以,你必须以这种方式放置代码:

    AfterConfiguration do |config|
       yourCodeStartUp()                    # Put your SETUP code here including the launch of webdriver
       at_exit 
           yourCodeTearDown()               # Put your CLOSING routine here
           puts 'stopped'
       end
    end

这样你的例程at_exit代码在之前执行一个Webdriver,它可以按顺序关闭系统。