2011-08-01 14 views
3

これはセレングリッドからです。 java/C#コードを並列実行する方法セレングリッド並列実行

これで十分ですか?

ISelenium selenium1 = new DefaultSelenium("localhost", 5555, "*iehta", "http://localhost/"); 
ISelenium selenium2 = new DefaultSelenium("localhost", 5556, "*iehta", "http://localhost/"); 
ISelenium selenium4 = new DefaultSelenium("localhost", 5557, "*iehta", "http://localhost/"); 


selenium1.Start(); 
selenium2.Start(); 
selenium3.Start(); 

私はhttp://localhost:4444/consoleを実行したときに3つの利用可能なリモートコントロールが、私はアップからコードを実行した場合でも0アクティブなリモートコントロールがありますので。

私がわからない蟻からのコード100%。なぜパラメータがありますか
<arg value="-parallel"/>

何をやっている
<target name="run-demo-in-parallel" description="Run Selenium tests in parallel"> 
    <java classpathref="demo.classpath" 
     classname="org.testng.TestNG" 
     failonerror="true" 

     > 
     <sysproperty key="java.security.policy" file="${basedir}/lib/testng.policy"/> 
     <sysproperty key="webSite" value="${webSite}" /> 
     <sysproperty key="seleniumHost" value="${seleniumHost}" /> 
     <sysproperty key="seleniumPort" value="${seleniumPort}" /> 
     <sysproperty key="browser" value="${browser}" /> 

     <arg value="-d" /> 
     <arg value="${basedir}/target/reports" /> 
     <arg value="-suitename" /> 
     <arg value="Selenium Grid Demo In Parallel" /> 
     <arg value="-parallel"/> 
     <arg value="methods"/> 
     <arg value="-threadcount"/> 
     <arg value="10"/> 
     <arg value="-testclass"/> 
     <arg value="com.thoughtworks.selenium.grid.demo.WebTestForASingleBrowser"/> 
    </java> 
    </target> 

答えて

1

は、なぜこれはTestNGのためにあるパラメータ

<arg value="-parallel"/>? 

あります。これにより、すべてのメソッド/クラス/テストが順次ではなく並列で実行されます。このプロパティの詳細についてはhereをご覧ください。あなたは3つのRCを登録しており、理想的には3つすべてが実行に使用されているのを見るべきです。グリッドコンソールのリンクを確認して、使用率を確認できます。http://localhost:4444/console localhostは、ハブが実行されているIPで、portはハブがリスンしているポート番号です。

編集: RCポートではなく、セレンハブポートを指すようにコードを変更します。デフォルトでは、ハブポートは4444になります。また、RCノードを* iehtaのような環境で起動していることを確認してください。

+0

です。これはすべて当てはまりますが、「アクティブなリモートコントロール」ではRCがありません。これでいい? – senzacionale

+0

テストを開始すると、「アクティブなリモートコントロール」の下にRCが表示されます。あなたのコードに問題がありました。私は私の答えを更新しました。 –

0

は動作しますが、遅く、本当にシリアル方法でそれをやってと同じくらい悪いとなります。これは、セレンの呼び出しの大部分が完了するまでブロックされるためです。グリッドが提供する並列化を実際に利用するには、コードをマルチスレッド化する必要があります。 Seleniumオブジェクトごとに1つのスレッドを作成します。

+0

[OK]を私は今、ECHのセレンオブジェクトに対して1つのスレッドを作ります。しかし、私はそれがはるかに高速であると私は間違っているとは思わない。どうすれば並列実行が見えますか?答えは – senzacionale

0

あなたは(あなたが本当にしたかったことができる場合がある)並列にセレンインスタンスを実行するテストコードをマルチスレッドにする必要はありません。スレッドフォーキングを処理するフレームワークは、TestNG、Maven Surefire、Gradleなど、あなたのために実行できます。例えば、私のプロジェクトは、スレッド/インスタンスをforkするのGradleを使用して、単一のコンピュータ上でグリッドを実行している複数のインスタンスを示すことによって、これを証明している:https://github.com/djangofan/selenium-gradle-example

関連する問題