Watir webdriver Errno :: ECONNREFUSED:无法建立连接,因为目标计算机主动拒绝它。 – 连接(2)

更新:

我正在运行下面的代码来执行我的示例测试用例:(Windows 7,Watir 3.0.0,Watir-webdriver-0.6.1)

require "watir-webdriver" require 'test/unit' class Teste1 $var = Watir::Browser.new :chrome def met1 $var.goto 'google.com' $var.text_field(:name, "q").set 'sample' $var.button(:name =>'btnG').click end end class Teste2 < Test::Unit::TestCase $test = Teste1.new def test_gomet1 $test.met1() end end 

浏览器打开但脚本会引发以下错误:

 test_gomet1(Teste2): Errno::ECONNREFUSED: No connection could be made because the target machine actively refused it. - connect(2) C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:82:in `response_for' C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:38:in `request' C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call' C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:598:in `raw_execute' C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:576:in `execute' C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:99:in `get' C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/navigation.rb:14:in `to' C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.1/lib/watir-webdriver/browser.rb:63:in `goto' maisum.rb:11:in `met1' maisum.rb:21:in `test_gomet1' 

任何人都可以帮助我吗?

我无法获得test_closeVar测试的exception,但是我可以为其他两个测试重现它。 当您尝试在浏览器关闭后与浏览器进行交互时,会出现该exception。

使用Test :: Unit时,请记住测试按字母顺序运行。 因此, test_closeVar测试将在test_gomet1test_gomet2运行之前关闭浏览器。 test_gomet1test_gomet2将抛出该exception,因为浏览器已关闭。

作为快速修复,您可以在测试名称中添加数字,以使它们按特定顺序运行。

但是,长期解决方案实际上是让您的测试独立,这样订单无关紧要。

更新

几点意见:

  • 使用Selenium-Webdriver会出现问题,因此不会出现Watir-Webdriver特定问题。
  • 该脚本在Firefox中运行良好,因此它可能是一个特定的chromedriver问题。

解决方法:看起来Chrome浏览器不喜欢在测试用例之外声明。 我不明白为什么,但快速解决方法是在测试用例的设置中声明浏览器。 如果要为每个测试使用相同的浏览器,只要它尚不存在就可以声明它。

以下将运行(虽然我建议清理它以减少全局变量的使用):

 class Teste1 def met1 $var.goto 'google.com' $var.text_field(:name, "q").set 'sample' $var.button(:name =>'btnG').click end end class Teste2 < Test::Unit::TestCase def setup() unless defined?($var) $var = Watir::Browser.new :chrome end $test = Teste1.new() end def test_gomet1 $test.met1() end end