同時に複数のSelenium Tests(Jenkinsサーバーで)を実行したいと思います。
現在、ChromeDriverは特別なポートを介して通信しているように見えるため、一度に1つのテストのみを実行します。どういうわけか、複数のテストを開始するには、Seleniumを介してChromeDriverにある種のポート設定を渡す必要があると思います。
残念ながら、そのトピックのSelenium Webサイトは空です: http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#parallelizing-your-test-runs
私の観点からは、テストがローカルで実行されてもJenkinsで実行されても、問題は同じです。何らかの形でChromeDriverを構成する必要があります。問題は、その方法です。
誰もがどこを見て、これを達成するためにどのファイルが関係しているのでしょうか?
探しているのは Selenium Grid 2 です。
グリッドでは次のことができます。
Chromedriverの複数のインスタンスをローカルで非常に簡単に実行できます。複数のドライバーオブジェクトをインスタンス化するだけで、chromedriverはプロファイルを個別に保持し、それ自体で実行するポートを見つけます。
TestNGとMavenを使用して複数のテストを実行できる例へのリンク:
https://github.com/Ardesco/Selenium-Maven-Template
上記のプロジェクトのクローンを作成し、コマンドラインで次を実行します。
mvn verify -Pselenium-tests -Dbrowser=chrome -Dthreads=2
スレッドプールを管理するTestNGの機能を利用し、指定されている場合は複数のインスタンスを開きます。 jUnitでも同じことができますが、テストを個々のスレッドに実行するカスタムテストランナーを作成する必要があります。
Gradleを使用することにした場合、TestNGとjUnitの両方を使用してスレッドプールを管理することができ、多くの人がgradleをMavenに使用することを好みます。
これは古い質問ですが、まだ読んでいる人にとっては、グリッドを使用して複数のSelenium WebDriverインスタンスを並行して実行することは非常に可能ですwithout。 Chrome、FireFox、およびPhantomJs(最大5つ)を使用してこれを正常にテストしました。各WebDriverインスタンスは分離されたコンテキストを使用するため、セッションの競合は問題になりません。ただし、Webサイトの要件に応じて、サーバー側の競合に注意してください!
NUnitユーザーの場合、NUnit 3.2.1には「TestContext.Current.WorkerId」プロパティがあり、NUnitワーカーごとに1つのWebDriverインスタンスを分離できます。
グリッドをMaven並列化クラスと組み合わせて使用することに同意します。1台のPCで複数のインスタンスを実行できます。 Jenkinsは、ビルドにAntを使用している場合に可能です。次に、並行して実行できるテストを指定できます。設定はとても簡単です;)