Ruby 瓦蒂尔+;黄瓜连接被拒绝
各位,我在测试中使用了watir+cucumber,对于每个功能,我都在重用浏览器的实例,也就是说,我创建了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
@@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),这样您就可以独立于其他场景运行它,这将使测试和故障排除变得更容易。这是一个很好的一般性建议,但我认为这不是问题的原因。