2012-07-20 181 views
3

更新: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' 

谁能帮助我吗?

+0

我建议你尝试的代码几行尽可能重现该问题。 – 2012-07-21 11:11:39

+0

删除'met2','test_gomet2'和'test_closeVar'我得到了同样的错误,这是我能够重现问题的最少的代码行 – Marcelo 2012-07-23 13:52:11

+0

然后更新问题。 – 2012-07-23 14:07:55

回答

4

我无法获得test_closeVar测试的例外,但是我可以为您的其他两项测试再现它。当您尝试在关闭浏览器后与浏览器进行交互时,您会遇到此异常。

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

作为一个快速解决方案,您可以将数字添加到测试名称以使它们按特定顺序运行。

长期的修复虽然真的让你的测试独立,所以顺序无关紧要。

更新

一对夫妇的意见:

  • 使用硒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 
+0

我已经从我的代码中简单地删除了'test_CloseVar'测试,但仍然得到相同的错误。 – Marcelo 2012-07-23 13:24:14

+0

感谢Justin Ko,我工作过,我是Ruby/Watir的入门者,我会尝试改进我的脚本 – Marcelo 2012-07-25 17:43:34

相关问题