2012-07-20 189 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

相關問題