分散Seleniumテスト用のSeleniumグリッドのセットアップ



このブログは、SeleniumGridの必要性とその利点を理解するのに役立ちます。ハブとノードを構成して、最初のSeleniumグリッドをセットアップするために読んでください。

このSeleniumチュートリアルシリーズの他のブログでは、テストケースの作成と、それらのテストケースの順番と並行実行について説明しています。したがって、議論に残された最後の手法は、リモートマシンでのテストケースの実行です。 Selenium Gridは、リモートマシン/ホストでこれらのテストを実行するために使用できます。したがって、それが今日のブログの議論のトピックです。

  1. Selenium Gridを使用する理由と時期は?
  2. Seleniumグリッドとは何ですか?
  3. Seleniumグリッド1とSeleniumグリッド2
  4. Seleniumグリッドのアーキテクチャ
  5. Seleniumグリッドの構築

Seleniumグリッドを使用する理由と時期

今日使用されている非常に多くのウェブブラウザがあります。ユーザーは、このブログを読むためにChrome、Firefox、Safari、Opera、さらにはInternetExplorerを使用している可能性があります。異なるバージョンのブラウザを使用している可能性があります。また、これらのブラウザは、Windows、Mac、Ubuntu、その他のLinuxディストリビューションなど、任意のOSで実行されている可能性があります。





ユーザーがインターネット上で重要な何かを見ていたらどうしますか?あなたのビジネスにとって重要な何か。ユーザーや顧客が最高のユーザーエクスペリエンスを確実に得られるようにするためだけに、さらに一歩進んで(Webアプリをテストして)みませんか?あなたはそうしますよね?

まあ、あなたはすべきです!



しかし、問題は、それがどれほど実現可能かということです。考えられるすべてのOSと利用可能なすべてのWebブラウザーでWebアプリのテストに時間を費やすことができますか?うーん、それはちょっとした挑戦のように聞こえます。これは、Selenium Gridが法案に適合し、役立つ場所です。時間とエネルギーを節約します。

これに加えて、もう1つの疑問が生じます。ローカルシステムを使用してSeleniumグリッドインフラストラクチャをセットアップすることは実行可能ですか?必要なすべてのブラウザとオペレーティングシステムでグリッドを維持することは困難です。このために、Selenium自動化スクリプトを実行するためにアクセスできるオンラインSeleniumグリッドを提供する複数のオンラインプラットフォームがあります。たとえば、 LambdaTest 。 2000以上のブラウザ環境があり、テストを実行して、ブラウザ間のテストを真に自動化できます。

Seleniumグリッドとは何ですか?

Selenium Gridは、Seleniumツールスイートのもう1つの重要なツールです。グリッドは、複数のWebブラウザーで同時に実行したり、異なるオペレーティングシステムで開始したり、異なるマシンでホストしたりできるWebDriverテスト/ RCテストを調整できます。



グリッド作業-セレングリッドそれで、それはどのようにうまくいくのですか?グリッドはハブノードアーキテクチャを採用しており、マスターとして機能するハブが1つと、スレーブとして機能するノードが1つ以上あります。

つまり、実行する必要のあるジョブ/テストが合計100ある場合、テストは5台のマシンで同時に実行でき、各マシンで20個のテストが実行されます。実際、これらのテストは、オペレーティングシステムとブラウザのさまざまな組み合わせで実行できます。ここでの各マシンは異なるOSである可能性があり、各OS内では、テストは異なるブラウザーで実行できます。

この行為により、テスト実行の多くの時間を簡単に節約できます。上記の例を検討すると、実行時間を1台のマシンでテストを実行するのにかかる合計時間の約1/5に短縮できます。

以前のブログから思い出すことができれば、グリッドがSeleniumプロジェクトの開始以来、つまりSelenium v​​1以降、Seleniumプロジェクトの一部であったことを何度も言及しました。 SeleniumGridもSeleniumv2の一部であり、現在はSeleniumv3の一部です。 Seleniumグリッドのv2とv3に大きな違いはありません。ただし、v1には比較的多くの違いがあります。では、v1とv2の違いを理解してください。

Seleniumグリッド1とSeleniumグリッド2

グリッドv1.0とv2.0の基本的な違いは、RCがグリッド1で使用され、WebDriverがグリッド2で使用されたことです。次の表に、違いの詳細を示します。

グリッド1 グリッド2
ApacheAntがインストールされている必要がありますApacheAntのインストールは必要ありません
独自のリモコンがあります(これはRCサーバーとは異なります)Selenium Serverjarファイルにバンドルされています
SeleniumRCコマンドのみをサポートしますSeleniumRCスクリプトとWebDriverスクリプトの両方をサポートします
リモコンごとに自動化できるブラウザは1つだけですリモコンごとに最大5つのブラウザを自動化できます


2つのバージョンの基本的な違いを学習したので、SeleniumGridについて詳しく見ていきましょう。。

Seleniumグリッドのアーキテクチャ

前述したように、グリッドは1つのハブと複数のノードに基づいて機能します。しかし、ハブとノードとは何ですか?それらは何をしますか?

ハブ

どのグリッド設定でも、ハブは1つしか存在できず、それがそのグリッド設定の中心点になります。実行する必要のあるすべてのテストをここにロードする必要があります。ここにテストがロードされているにもかかわらず、それらはノードでのみ実行されます。任意のホストマシンをハブとして構成でき、他のホストでのテスト実行のアクティビティを調整します。

これを行うには、最初にハブを構成してから、他のノードを作成してハブに登録する必要があります。詳細に入る前に、ハブを構成するコマンドを紹介します。

ハブの構成

まず、SeleniumhqのWebサイトからSeleniumサーバーのJARファイルをダウンロードする必要があります。リンクは ここに 。また、Javaがシステムにインストールされ、環境変数が設定されていることを確認する必要があります。

jarファイルをダウンロードしたら、適切なディレクトリに配置する必要があります。便宜上、ダウンロードしてCドライブのSeleniumフォルダーに配置しました。 jarファイルもダウンロードして、他のすべてのノードの同様のディレクトリに配置することをお勧めします。

ハブを構成するには、Windowsのコマンドプロンプトでコマンドを実行する必要があります。コマンドは以下のスニペットにあります。

C:UsersVardhan> cd .. C:Users> cd .. C:> cd Selenium C:Selenium> java -jar selenium-server-standalone-3.4.0.jar -role hub

ザ・ selenium-server-standalone-3.4.0.jar ダウンロードしたjarファイルの名前です。
ザ・ -役割 フラグは、その特定のホストマシンをハブとして設定するために使用されます。 Enterキーを押すと、画面に次の出力が表示されます。

上記のスクリーンショットに気づかなかった場合は、もう一度見てください。 「 -ノードはhttp://192.168.0.11:4444/grid/registerに登録する必要があります ‘。ハブが構成されたので、ノードをセットアップしてこのハブに接続する必要があります。

192.168.0.11はハブのIPアドレスであり、すべてのノードがこのIPアドレスに接続する必要があります。 4444は、Selenium Gridがホストされ、要求をリッスンするデフォルトのポート番号です。他のサービスがポート4444で実行されていて、Selenium Gridを別のポートでホストする場合は、を指定することでそれを行うことができます。 -ポート フラグの後にポート番号が続きます。

ノード

ノードは、テストが実行されるホストマシンです。これらのテストはハブによって開始されます。ハブは、リモートマシンまたはハブ自体が配置されている同じマシンのいずれかで1つ以上のノードを起動できます。各ノードで、異なるオペレーティングシステムを起動でき、異なるオペレーティングシステムで、同じブラウザまたは異なるブラウザの異なるバージョンを開始できます。

ノードの構成

ハブと同様に、最初にノードマシンにJarファイルをダウンロードし、Cドライブまたはその他の一般的なディレクトリに配置する必要があります。その後、Windowsのコマンドプロンプトで以下のコマンドを実行できます。ハブと同じマシンでノードを起動する場合でも、別のコマンドプロンプトを起動してコマンドを実行する必要があります。

java -Dwebdriver.chrome.driver = E:chromedriver.exe -jar selenium-server-standalone-3.4.0.jar -role node -hub http://192.168.0.11:4444/grid/register

このコマンドには、ハブを起動するために必要なコマンドと比較して、わずかな違いがあります。
-Dwebdriver.chrome.driver = E:chromedriver.exe ブラウザドライバのパスを設定するために使用されます。 WebDriverコードでブラウザドライバーのパスを設定するのと同様に、ノードがテストを実行できるように、ここでパスを指定します。 Selenium v​​3以降では、Firefox用のドライバーブラウザーをダウンロードする必要があります。 FirefoxのブラウザドライバーはGeckoドライバーです。ただし、バージョン1および2では、Firefox以外のすべてのブラウザーにブラウザードライバーを設定する必要があります。
-ロールノード フラグは、その特定のホストマシンをノードとして設定するために使用されます。
-ハブhttp://192.168.0.11:4444/grid/register ハブのIPアドレスを使用してハブに接続するようにノードに通知します。注意すべき重要な点は、ハブと同じマシンでノードを起動する場合は、「 -ハブhttp:// localhost:4444 / grid / register ハブのIPアドレスの代わりにコマンドで ‘。

Enterキーを押すと、コマンドプロンプトに次の出力が表示されます。

これまでに、ノードはハブに接続されていたはずです。ハブの起動に使用したコマンドプロンプトに戻ると、次のメッセージが表示されることを確認できます。 ノードを登録しましたhttp://192.168.0.11:5555 ‘。

IPアドレスとポート番号はノードのものです。ハブと同じマシンにノードがあるため、ノードに使用されるポートは5555です。他のマシンでノードを開始すると、デフォルトのポートが使用されます。

ハブのマシンで次のURLを起動すると、ハブに接続されているノードのステータスが表示されます。以下のスクリーンショットで強調表示されている部分を参照してください。

Seleniumグリッドが構成されたので、ノードでのテストスクリプトの実行に進むことができます。ハブでスクリプトを実行する必要があり、スクリプトはノードで実行されることを再度強調しておきます。テストの実行に使用されるスクリプトは、WebDriverに似ています。テスト。

Seleniumグリッドの構築

スクリプトをEclipseIDEで実行しました。このスクリプトの実行は、2つの重要なライブラリパッケージに依存しています。彼らです DesiredCapabilities オブジェクトと RemoteWebDriver オブジェクト。

DesiredCapabilitiesは、ノードのブラウザタイプとOSを設定するために使用されます。 DesiredCapabilitiesオブジェクトをインポートするには、以下のコードを使用します。

import org.openqa.selenium.remote.DesiredCapabilities

RemoteWebDriverは、テストを実行するノードを選択するために使用されます。 RemoteWebDriverオブジェクトをインポートするには、以下のコード行を使用します。

import java.net.MalformedURLException import java.net.URL import org.openqa.selenium.remote.RemoteWebDriver

以下のコードスニペットに示すように、これら2つのパッケージをスクリプト用のTestNGアノテーションパッケージと一緒にインポートしました。詳細なレポートが生成されるTestNGテストとしてこれを実行したため、TestNGアノテーションをインポートしました。コードに同じパッケージのセットをインポートすることをお勧めします。

Selenium Hubコンソールにあるブラウザのロゴを操作すると、次のような詳細が表示されます。 browserName そしてその プラットホーム 自動化するノードのこの画像は、ノードで開くことができるブラウザーのインスタンスの数も示しています。最大5つのChrome、5つのFirefox、および1つのInternetExplorerインスタンスを構成できます。これらの詳細は、以下のスクリーンショットに示されています。

以下のスニペットのコードを使用して、最初のグリッドを設定できます。

パッケージGridTestimport org.testng.annotations.AfterTest import org.testng.annotations.BeforeTest import org.testng.annotations.Test import java.net.MalformedURLException import java.net.URL import org.junit.Assert import org.openqa.selenium .Platform import org.openqa.selenium.WebDriver import org.openqa.selenium.remote.DesiredCapabilities import org.openqa.selenium.remote.RemoteWebDriver public class TestGrid {static WebDriver driver static String nodeUrl @BeforeTest public void setup()throws MalformedURLException { nodeUrl = 'http://192.168.0.11:5555 / wd / hub' DesiredCapabilitiesabilities = DesiredCapabilities.chrome()capabilities.setBrowserName( 'chrome')capabilities.setPlatform(Platform.WINDOWS)driver = new RemoteWebDriver(new URL(nodeUrl )、capabilities)} @Test public void simpleTest()Edureka '、driver.getTitle())@ AfterTest public void afterTest(){driver.quit()}}

テストスクリプト全体を3つのテストアノテーションに分割しました。 @ BeforeTest、@ Test、および@AfterTest。 @BeforeTestでは、DesiredCapablitiesオブジェクトとRemoteWebDriverオブジェクトを使用してノードを構成しました。 @Testで、ノードにEdurekaのホームページに移動してページのタイトルをアサートするように依頼しました。 @AfterTestで、ノードにブラウザインスタンスを終了するように依頼しました。

テストが実行に合格すると、以下の出力が得られます。

2017年5月18日15:09:07org.openqa.selenium.remote.ProtocolHandshake createSession情報:検出された方言:OSS合格:simpleTest ===================== ==========================デフォルトのテスト実行:1、失敗:0、スキップ:0 ========== ================================================== ==================================デフォルトスイート合計テスト実行:1、失敗:0、スキップ:0 = ==============================================

これはTestNGテストとして実行されるため、以下のスクリーンショットのような詳細なテストレポートが表示されます。

ソート関数c ++配列

TestNGとは何か、テストアノテーションの使用方法がわからない場合は、使用方法に関する私のブログを読んでください。 TestNGを使用したSeleniumWebDriver このSeleniumチュートリアルシリーズから。

以下のビデオを見て、Seleniumグリッドを構築する方法のデモンストレーションを見ることができます。ビデオを配信するインストラクターは、このブログで説明されているのと同じ概念を説明しています。

初心者向けのSeleniumグリッドチュートリアル| Seleniumチュートリアル|エドゥレカ

これで、このSeleniumGridブログは終わりです。このブログシリーズのコード/コンテンツに疑問や問題がある場合は、下のコメントセクションに残してください。できるだけ早く問題を解決します。

Seleniumを学び、テストドメインでキャリアを築きたい場合は、インタラクティブなライブオンラインをご覧ください。 ここでは、24時間365日のサポートが付属しており、学習期間全体をガイドします。

質問がありますか?コメント欄にご記入ください。折り返しご連絡いたします。