3

更新しました:

サンプルテストケースを実行するために、以下のコードを実行しています:(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'

誰かがそれについて私を助けることができますか?

4

1 に答える 1

4

テストではその例外を取得できませんがtest_closeVar、他の 2 つのテストでは再現できます。ブラウザーを閉じた後にブラウザーと対話しようとすると、その例外が発生します。

Test::Unit を使用する場合、テストはアルファベット順に実行されることに注意してください。したがって、test_closeVarテストはブラウザを閉じてからtest_gomet1実行test_gomet2します。ブラウザが閉じているため、その例外がスローされますtest_gomet1test_gomet2

簡単な修正として、テスト名に番号を追加して、特定の順序で実行することができます。

ただし、長期的な修正は、実際にはテストを独立させて、順序が問題にならないようにすることです。

アップデート

いくつかの観察:

  • この問題は 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
于 2012-07-20T18:50:10.027 に答える