Watir + Cucumber Connection拒绝了

伙计们,我在我的测试中使用watir + cucumber,对于我重用浏览器实例的每个function,我创建了@@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' 

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

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

它只发生在Explorer和Chrome上

最后,我的结论如下:

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

由于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 之前执行,并且它可以按顺序关闭系统。