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

Ruby Watir webdriver Errno::EconRefused:无法建立连接,因为目标计算机主动拒绝了它。-连接(2),ruby,watir,watir-webdriver,Ruby,Watir,Watir Webdriver,更新: 我正在运行下面的代码来执行我的示例测试用例:(Windows7,Watir 3.0.0,Watir-webdriver-0.6.1) 有人能帮我吗?我无法在测试中获得该异常,但是我可以在其他两个测试中重现该异常。当浏览器关闭后尝试与之交互时,会出现该异常 使用Test::Unit时,请记住测试是按字母顺序运行的。因此,您的test\u closeVartest将在test\u gomet1和test\u gomet2运行之前关闭浏览器测试gomet1和测试gomet2将抛出该异常,因为浏

更新:

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


有人能帮我吗?

我无法在
测试中获得该异常,但是我可以在其他两个测试中重现该异常。当浏览器关闭后尝试与之交互时,会出现该异常

使用Test::Unit时,请记住测试是按字母顺序运行的。因此,您的
test\u closeVar
test将在
test\u gomet1
test\u gomet2
运行之前关闭浏览器<代码>测试gomet1和测试gomet2将抛出该异常,因为浏览器已关闭

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

但长期的解决办法是让测试独立,这样顺序就不重要了

更新

以下是几点观察:

  • 问题是在使用SeleniumWebDriver时出现的,因此不是Watir Webdriver特有的问题
  • 该脚本在Firefox中运行良好,因此可能是chromedriver特有的问题
解决方法:chrome浏览器似乎不喜欢在测试用例之外声明。我不明白为什么,但快速修复方法是在测试用例的设置中声明浏览器。如果要对每个测试使用相同的浏览器,可以在浏览器不存在时声明它

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

class Teste1
def met1
$var.goto'google.com'
$var.text_字段(:name,“q”)。设置“sample”
$var.button(:name=>'btnG')。单击
结束
结束
类Teste2
我建议您尝试用尽可能少的代码行重现问题。删除
met2
test\u gomet2
test\u closeVar
我得到了相同的错误,这是我能够重现问题的最少代码行是测试/单元代码还是watir代码中的问题?我建议尝试在没有测试/单元代码的情况下复制代码。我认为问题出在测试/单元中,原因是当我删除
并将我的方法称为
teste2=teste2.new;teste2.test_gomet1()
有效。这是很好的信息。因此,调用这些方法导致了问题。我只是从代码中删除了
test\u CloseVar
test,但仍然得到了相同的错误。感谢Justin Ko,这很有效,我是Ruby/Watir的初学者,我将尝试改进我的脚本
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'
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