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% 理解できない ant のコード。パラメータがあるのはなぜ
<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>
4

3 に答える 3

1

パラメータがある理由

<arg value="-parallel"/>?

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

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

`ISelenium selenium1 = new DefaultSelenium("localhost", 4444, "*iehta",` "http://localhost/");
于 2011-08-02T13:29:00.560 に答える
0

Selenium インスタンスを並行して実行するために、テスト コードをマルチスレッド化する必要はありません (必要に応じて可能ですが)。TestNG、Maven Surefire、Gradle など、スレッドの分岐を処理するフレームワークでそれを行うことができます。たとえば、私のプロジェクトでは、Gradle を使用してスレッド/インスタンスをフォークする単一のコンピューター上のグリッドを介して実行される複数のインスタンスを示すことで、これを証明しています: https://github.com/djangofan/selenium-gradle-example

于 2013-12-26T22:56:07.810 に答える
0

あなたがしていることはうまくいきますが、本当にシリアルな方法でそれを行うのと同じくらい遅く、ほとんど悪いでしょう. これは、Selenium のほとんどの呼び出しが完了するまでブロックされるためです。グリッドによって提供される並列化を実際に活用するには、コードをマルチスレッド化する必要があります。Selenium オブジェクトごとに 1 つのスレッドを用意します。

于 2011-08-01T21:54:50.380 に答える