Ruby 瓦蒂尔+;黄瓜连接被拒绝

Ruby 瓦蒂尔+;黄瓜连接被拒绝,ruby,cucumber,watir,watir-webdriver,Ruby,Cucumber,Watir,Watir Webdriver,各位,我在测试中使用了watir+cucumber,对于每个功能,我都在重用浏览器的实例,也就是说,我创建了@@browser=watir::browser的实例。新建,然后在整个测试中重复使用它,我使用的是watir webdriver,我的测试目前运行良好,我刚刚添加了另一个场景,并始终收到以下错误消息: Connection refused - connect(2) (Errno::ECONNREFUSED) /System/Library/Frameworks/Ruby.fr

各位,我在测试中使用了watir+cucumber,对于每个功能,我都在重用浏览器的实例,也就是说,我创建了
@@browser=watir::browser的实例。新建
,然后在整个测试中重复使用它,我使用的是
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
访问它。

我今天讨论了同一问题,并且花了很多时间分析它

它只在浏览器和Chrome上发生

最后,我的结论如下:

  • 为了在Cucumber测试之后关闭浏览器,我使用了at_exit全局钩子(如中所建议的)
  • 我看到Watir webdriver(可能还有Selenium)链接同一个钩子来关闭chomedriver.exe进程(或者IE的类似程序)
  • 经过一些试验(可能是因为我对Ruby没有深入的经验),我发现您用来链接到at_出口的顺序是至关重要的
当向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

这样,您的退出代码例程将在Webdriver的退出代码之前执行,它可以有序地关闭系统。

这是轻信息。您添加了什么样的场景?它是在开始时失败还是在新场景开始时失败?你可能忘记了其他什么改变了(比如Firefox升级了)?如果删除新场景会发生什么?祝你好运。这是一个典型的UI场景,打开浏览器并执行一些UI操作。它在那个场景中失败了,当我删除那个场景时,一切都很好。非常感谢。您添加的场景是使用Net::HTTP连接到某个对象。无法建立此连接。可以是任何东西,例如URL中的输入错误。如果没有其他信息(如场景和支持的步骤定义),我们将无法提供更多帮助。请向我们展示失败步骤的场景和步骤定义。尝试在场景中添加一个标记(例如@wip),这样您就可以独立于其他场景运行它,这将使测试和故障排除变得更容易。这是一个很好的一般性建议,但我认为这不是问题的原因。