Selenium グリッド チュートリアル: ハブとノードのセットアップ (例)
何ですか Selenium グリッド?
Selenium グリッド は、 Selenium 複数のブラウザ、オペレーティング システム、マシン間で複数のテストを並行して実行することに特化したスイートです。これは、サーバーがハブとして機能するリモート ブラウザ インスタンスのコマンドをルーティングすることによって実現されます。ユーザーは、テストを実行するためにリモート サーバーを構成する必要があります。
Selenium Grid には、古い Grid 2 と新しい Grid 1 の 2 つのバージョンがあります。Grid 2 は徐々に廃止されていくため、ここでは Grid 1 のみに焦点を当てます。 Selenium 私のチーム
Selenium グリッド Archi構造
Selenium グリッドにはハブとノードがあります Archi構造。

ハブ
- ハブは、テストをロードする中心点です。
- グリッド内にはハブが XNUMX つだけ存在する必要があります。
- ハブは 1 台のマシン (たとえば、OS が以下のコンピュータ) 上でのみ起動されます。 Windows 7、ブラウザはIEです。
- ハブを含むマシンでテストが実行されますが、ノード上でブラウザが自動化されていることがわかります。
Nodes
- ノードは、 Selenium ハブにロードしたテストを実行するインスタンス。
- グリッドには XNUMX つ以上のノードが存在できます。
- ノードは、異なるプラットフォームやブラウザを備えた複数のマシン上で起動できます。
- ノードを実行するマシンは、ハブのプラットフォームと同じプラットフォームである必要はありません。
Selenium グリッドではハブノードの概念が使用されており、テストは と呼ばれる単一のマシン上でのみ実行されます。 ハブ、ただし実行は、と呼ばれる別のマシンによって行われます。 ノード.
設定方法 Selenium グリッド?
このセクションでは、2 台のマシンを使用します。 最初のマシンはハブを実行するシステムとなり、もう一方のマシンはノードを実行します。 簡単にするために、ハブが実行されるマシンを「マシン A」と呼び、ノードが実行されるマシンを「マシン B」と呼びます。 IP アドレスを記録することも重要です。 マシン A の IP アドレスが 192.168.1.3 で、マシン B の IP アドレスが 192.168.1.4 だとします。
ステップ1) ダウンロード Selenium サーバーから こちら.
ステップ2) 置くことができます Selenium サーバーの .jar ファイルはハード ドライブの任意の場所にあります。ただし、このチュートリアルでは、マシン A とマシン B の両方の C ドライブに配置します。これでインストールは完了です。 Selenium グリッド。次の手順でハブとノードを起動します。
ステップ3)
- これからハブを起動します。マシン A に移動します。コマンド プロンプトを使用して、マシン A のルートである C ドライブに移動します。これは、このディレクトリが、 Selenium サーバー。
- コマンド プロンプトで次のように入力します。 java -jar selenium-server-standalone-2.30.0.jar -role ハブ
- ハブは正常に起動されるはずです。 コマンド プロンプトは次の画像のように表示されるはずです。
ステップ4) ハブが実行されているかどうかを確認するもう 1 つの方法は、ブラウザを使用することです。 Selenium デフォルトでは、グリッドは Web インターフェイスにマシン A のポート 4444 を使用します。ブラウザを開いて、次のサイトにアクセスするだけです。 http://localhost:4444/grid/console
また、マシン B がハブの Web インターフェイスにアクセスできるかどうかを確認するには、そこでブラウザを起動し、「iporhostnameofmachineA」にハブが実行されているマシンの IP アドレスまたはホスト名を入力します。 マシン A の IP アドレスは 192.168.1.3 なので、マシン B のブラウザで次のように入力する必要があります。 http://192.168.1.3:4444/grid/console
ステップ5)
- ハブがすでにセットアップされているので、ノードを起動します。 マシン B に移動し、そこでコマンド プロンプトを起動します。
- ドライブ C のルートに移動し、以下のコードを入力します。 IP アドレス 192.168.1.3 を使用したのは、このアドレスでハブが実行されているためです。 ここではポート 5566 も使用しましたが、任意の空きポート番号を選択できます。
- 注: を使用する場合は、Gecko ドライバーへのパスを指定する必要があります。 Firefox。 使用する必要がある更新されたコードは次のとおりです
java -Dwebdriver.gecko.driver="C:\geckodriver.exe" -jar selenium-server-standalone-3.4.0.jar -role webdriver -hub http://192.168.1.3:4444/grid/register -port 5566
- Enter キーを押すと、コマンド プロンプトは次の画像のようになります。
ステップ6) に行きます Selenium グリッド Web インターフェイスとページを更新します。このようなものが表示されるはずです。
この時点で、すでに単純なグリッドが構成されています。 これで、マシン B でリモートからテストを実行する準備が整いました。
いつ使用するか Selenium グリッド?
あなたが使うべきです Selenium 次のいずれかまたは両方を実行する場合はグリッドを使用します。
- さまざまなブラウザ、オペレーティング システム、マシンに対して同時にテストを実行します。 これにより、アプリケーションが確実に テスト は、ブラウザと OS の幅広い組み合わせと完全に互換性があります。
- テストスイートの実行時間を節約します。セットアップする場合 Selenium たとえば一度に 4 つのテストをグリッドで実行すると、スイート全体を約 4 倍の速さで完了できるようになります。
グリッド 1.0 とグリッド 2.0
主な違いは次のとおりです。 Selenium グリッド 1 と 2。
グリッド1 | グリッド2 |
---|---|
Selenium グリッド 1 には、グリッド XNUMX とは異なる独自のリモコンがあります。 Selenium RCサーバー。これらは 2 つの異なるプログラムです。 | Selenium Grid 2 は現在、 Selenium サーバーjarファイル |
インストールして設定する必要があります アパッチ グリッド 1 を使用する前に、まず Ant を実行してください。 | Grid 2 に Apache Ant をインストールする必要はありません。 |
サポートしかできない Selenium RC コマンド/スクリプト。 | 両方をサポートできる Selenium RC および WebDriver スクリプト。 |
リモコンごとに自動化できるブラウザは XNUMX つだけです。 | 5 つのリモコンで最大 XNUMX つのブラウザを自動化できます。 |
Selenium グリッドは 2 つの異なる方法で設定できます。 1 つはコマンドライン経由、もう 1 つは JSON 構成ファイル経由です。
グリッド上で実行できるテスト スクリプトの設計
グリッド上で実行されるテスト スクリプトを設計するには、次を使用する必要があります。 求められる能力 と リモートウェブドライバー オブジェクト。
- 求められる能力 のタイプを設定するために使用されます ブラウザ や OS 自動化するということです。
- リモートウェブドライバー は、テストを実行するノード (またはマシン) を設定するために使用されます。
使用するには 求められる能力 オブジェクトを使用するには、まずこのパッケージをインポートする必要があります
使用するには リモートウェブドライバー オブジェクトの場合、これらのパッケージをインポートする必要があります。
DesiredCapabilites オブジェクトの使用
Grid の Web インターフェイスに移動し、自動化するブラウザの画像の上にマウスを置きます。 注意してください プラットフォーム、 と ブラウザ名 ツールチップで表示されます。
この場合、プラットフォームは「XP」、ブラウザ名は「」です。Firefoxに設立された地域オフィスに加えて、さらにローカルカスタマーサポートを提供できるようになります。」
以下に示すように、WebDriver でプラットフォームとブラウザ名を使用します (もちろん、最初に必要なパッケージをインポートする必要があります)。
RemoteWebDriver オブジェクトの使用
RemoteWebDriver に必要なパッケージをインポートし、上で作成した DesiredCapabilities オブジェクトを RemoteWebDriver オブジェクトのパラメーターとして渡します。
グリッド上でサンプル テスト ケースを実行する
以下は単純な WebDriver です テスト で作成できるコード Eclipse これを実行すると、マシン B で自動化が実行されます。
import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.MalformedURLException; import java.net.URL; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.Assert; import org.testng.annotations.*; public class Grid_2 { WebDriver driver; String baseUrl, nodeURL; @BeforeTest public void setUpWthrows MalformedURLException { baseUrl = "http://newtours.demoaut.com/"; nodeURL = "http://192.168.1.4:5566/wd/hub"; DesiredCapabilities capability = DesiredCapabilities.firefox(); capability. setBrowserName("firefox"); capability. setPlatform(Platform.XP); driver = new RemoteWebDriver(new URL(nodeURL), capability); } @AfterTest public void afterTest() { driver.quit(); } @Test public void simpleTest() { driver.get(baseUr1); Assert.assertEquas("Welcome: Mercury Tours", driver.getTitle()); } }
テストはパスするはずです。
Selenium JSONファイルを使用したグリッド構成
JSONは Javascript オブジェクト表記法。ブラウザと Web サーバー間のデータ交換に使用される標準形式です。 Selenium Selenium Grid の設定に使用できる組み込みの JSON 構成ファイルがあります。
以下は、JSON 構成ファイルを使用して Selenium グリッドを構成する手順です。
ステップ1) 以下のパスを使用して、JSON 構成ファイルのコードをダウンロードします。
これがコードです
{ "port": 4444, "newSessionWaitTimeout": -1, "servlets" : [], "withoutServlets": [], "custom": {}, "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher", "registryClass": "org.openqa.grid.internal.DefaultGridRegistry", "throwOnCapabilityNotPresent": true, "cleanUpCycle": 5000, "role": "hub", "debug": false, "browserTimeout": 0, "timeout": 1800 }
ステップ2) コードをコピーし、拡張子「.json」を付けてメモ帳などのテキスト エディタに貼り付けます。
ステップ3)コマンドプロンプトを使用して以下のコマンドを使用してハブを起動します。
java -jar selenium-server-standalone-2.53.1.jar -role hub -hubConfig hubconfig.json
注: Selenium スタンドアロンの jar ファイルと json ファイルは同じディレクトリに存在する必要があります
ステップ4) ハブが正常にセットアップされたことを示す以下の画面が表示されます。
ステップ5) Webブラウザを開いて、以下のURLに接続してみてください。
http://192.168.43.223:4444/grid/console
注: URL はマシンごとに異なる場合があります。 上の画面で「ノードの登録先」が続く URL を使用する必要があります。
ステップ6) Grid Console 画面が表示され、ハブが稼働中であることが示されます。
JSON を使用して NODE を構成する
ステップ1) から提供されるサンプル ノード構成ファイルをダウンロードします。 Selenium 以下のURLを使用して
注: Selenium 3.0以上を使用している場合は、以下のJSONファイルを使用する必要があります。
ステップ2) コードをコピーしてメモ帳などのテキスト エディタに貼り付け、拡張子「.json」を付けてファイルを保存します。
ステップ3)
コマンドプロンプトで以下のコマンドを実行します
Java-Dwebdriver.chrome.driver="chromedriver.exe" -Dwebdriver.ie.driver="IEDriverServer.exe" -Dwebdriver.gecko.driver="geckodriver.exe" -jar selenium-server-standalone-2.53.1.jar -role node -nodeConfig node1.json
注: コマンドを実行する前に、各ブラウザのドライバーがローカル マシンのディレクトリにダウンロードされていることを確認してください。
ステップ4) Enterキーを押すと以下の画面が表示されます
ステップ5) グリッド コンソールに移動して、ノードが正常に構成されているかどうかを確認します。
ブラウザはグリッド コンソールに表示されます。したがって、ノードが正常に構成されていることを確認できます。
サンプル テスト ケースがオン Selenium グリッド:
package com.objectrepository.demo; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.MalformedURLException; import java.net.URL; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.Assert; import org.testng.annotations.*; public class SeleniumGrid { WebDriver driver; String baseURL, nodeURL; @BeforeTest public void setUp() throws MalformedURLException { baseURL = "https://demo.guru99.com/test/guru99home/"; nodeURL = "http://192.168.43.223:5566/wd/hub"; DesiredCapabilities capability = DesiredCapabilities.chrome(); capability.setBrowserName("chrome"); capability.setPlatform(Platform.WIN10); driver = new RemoteWebDriver(new URL(nodeURL), capability); } @AfterTest public void afterTest() { driver.quit(); } @Test public void sampleTest() { driver.get(baseURL); if (driver.getPageSource().contains("MOBILE TESTING")) { Assert.assertTrue(true, "Mobile Testing Link Found"); } else { Assert.assertTrue(false, "Failed: Link not found"); } } }
上記のコードはChromeブラウザを起動し、「baseURL」変数で指定されたURLに移動します。ページに「Mobile Testing」というリンク名が表示されることを確認しました。
「nodeURL」変数の URL は、リモート マシンの IP アドレスを反映するように変更できます。テスト結果はデフォルトで確認可能 TestNG 生成されたレポート
製品概要
- Selenium グリッドは、異なるブラウザやプラットフォームで複数のテストを同時に実行するために使用されます。
- グリッドはハブノードの概念を使用します。
- ハブは、テストをロードする中心点です。
- ノードは、 Selenium ハブにロードしたテストを実行するインスタンス。
- インストールするには Selenium グリッド。ダウンロードするだけで済みます。 Selenium サーバー jar ファイル – 実行時に使用されるのと同じファイル Selenium RCテスト。
- ハブが実行されているかどうかを確認するには 2 つの方法があります。XNUMX つはコマンド プロンプトを使用する方法、もう XNUMX つはブラウザを使用する方法です。
- グリッド上でテスト スクリプトを実行するには、DesiredCapabilities オブジェクトと RemoteWebDriver オブジェクトを使用する必要があります。
- DesiredCapabilites は、自動化するブラウザと OS の種類を設定するために使用されます。
- RemoteWebDriver は、テストを実行するノード (またはマシン) を設定するために使用されます。