Selenium グリッドチュートリアル:ハブとノードの設定

⚡ スマートサマリー

Selenium Gridは、ハブ・ノードアーキテクチャを採用し、ブラウザ、オペレーティングシステム、マシンを横断して複数のテストを並列実行します。ハブは1台のマシンにテストをロードし、ノードは他のマシンでテストを実行するため、コマンドラインまたはJSON設定を通じて、より迅速なクロスブラウザカバレッジを実現します。

  • 🧩 グリッド定義: ハブとノードを介して、ブラウザ、OS、マシン間でテストを並列実行します。
  • 🎯 ハブ: テストをロードする中央のマシンは1台のみ。グリッドごとにハブは1つだけ。
  • 甘いもの<XNUMXxXNUMX><XNUMXxXNUMX><XNUMXxAXNUMX><XNUMXxAXNUMX>️️ ノード: 異なるプラットフォーム上で実際にテストを実行する1台以上のマシン。
  • ⚙️ セットアップ: 起動する Selenium -role hubと-role nodeを指定したサーバーjarファイルを使用するか、JSON設定ファイルを使用してください。
  • 🧪 テストスクリプト: DesiredCapabilitiesとRemoteWebDriverを使用して、ブラウザ、OS、およびノー​​ドをターゲットにします。
  • 豪華<XNUMXxXNUMXF><XNUMXxXNUMXF><XNUMXxBXNUMX><XNUMXxBXNUMX>️ 使用する場合: ブラウザとOS間の広範な互換性チェックと、より高速な並列処理スイートの実行。

Selenium グリッドチュートリアル

何ですか Selenium グリッド?

Selenium グリッド は、 Selenium 複数のブラウザ、オペレーティング システム、マシン間で複数のテストを並行して実行することに特化したスイートです。これは、サーバーがハブとして機能するリモート ブラウザ インスタンスのコマンドをルーティングすることによって実現されます。ユーザーは、テストを実行するためにリモート サーバーを構成する必要があります。

Selenium Grid には、古い Grid 2 と新しい Grid 1 の 2 つのバージョンがあります。Grid 2 は徐々に廃止されていくため、ここでは Grid 1 のみに焦点を当てます。 Selenium 私のチーム

Selenium グリッド Archi構造

Selenium グリッドにはハブとノードがあります Archi構造。

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 サーバーから こちら.

セットアップ Selenium グリッド

ステップ2) 置くことができます Selenium サーバーの .jar ファイルはハード ドライブの任意の場所にあります。ただし、このチュートリアルでは、マシン A とマシン B の両方の C ドライブに配置します。これでインストールは完了です。 Selenium グリッド。次の手順でハブとノードを起動します。

ステップ3)

  • これからハブを起動します。マシン A に移動します。コマンド プロンプトを使用して、マシン A のルートである C ドライブに移動します。これは、このディレクトリが、 Selenium サーバー。
  • コマンド プロンプトで次のように入力します。 java -jar selenium-server-standalone-2.30.0.jar -role ハブ
  • ハブは正常に起動されるはずです。 コマンド プロンプトは次の画像のように表示されるはずです。

セットアップ Selenium グリッド

ステップ4) ハブが実行されているかどうかを確認するもう 1 つの方法は、ブラウザを使用することです。 Selenium デフォルトでは、グリッドは Web インターフェイスにマシン A のポート 4444 を使用します。ブラウザを開いて、次のサイトにアクセスするだけです。 http://localhost:4444/grid/console

セットアップ Selenium グリッド

また、マシン 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

セットアップ Selenium グリッド

  • Enter キーを押すと、コマンド プロンプトは次の画像のようになります。

セットアップ Selenium グリッド

ステップ6) に行きます Selenium グリッド Web インターフェイスとページを更新します。このようなものが表示されるはずです。

セットアップ Selenium グリッド

この時点で、すでに単純なグリッドが構成されています。 これで、マシン 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 構成ファイル経由です。

グリッド上で実行できるテスト スクリプトの設計

グリッド上で実行されるテスト スクリプトを設計するには、次を使用する必要があります。 求められる能力 リモートウェブドライバー オブジェクト。

  • 求められる能力 のタイプを設定するために使用されます ブラウザ (NAIST) と OS 自動化するということです。
  • リモートウェブドライバー は、テストを実行するノード (またはマシン) を設定するために使用されます。

使用するには 求められる能力 オブジェクトを使用するには、まずこのパッケージをインポートする必要があります

グリッド上で実行できるテスト スクリプトの設計

使用するには リモートウェブドライバー オブジェクトの場合、これらのパッケージをインポートする必要があります。

グリッド上で実行できるテスト スクリプトの設計

DesiredCapabilites オブジェクトの使用

Grid の Web インターフェイスに移動し、自動化するブラウザの画像の上にマウスを置きます。 注意してください プラットフォーム、 ブラウザ名 ツールチップで表示されます。

DesiredCapabilites オブジェクトの使用

この場合、プラットフォームは「XP」、ブラウザ名は「」です。Firefox

以下に示すように、WebDriver でプラットフォームとブラウザ名を使用します (もちろん、最初に必要なパッケージをインポートする必要があります)。

DesiredCapabilites オブジェクトの使用

RemoteWebDriver オブジェクトの使用

RemoteWebDriver に必要なパッケージをインポートし、上で作成した DesiredCapabilities オブジェクトを RemoteWebDriver オブジェクトのパラメーターとして渡します。

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 構成ファイルのコードをダウンロードします。

https://github.com/SeleniumHQ/selenium/blob/selenium-3.141.59/java/server/src/org/openqa/grid/common/defaults/DefaultHub.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) ハブが正常にセットアップされたことを示す以下の画面が表示されます。

Selenium JSONファイルを使用したグリッド構成

ステップ5) ウェブブラウザを開いて、以下のサイトに接続してみてください。 URL

http://192.168.43.223:4444/grid/console

注: その URL 機械によって異なる場合があります。 URL 上記画面の「ノードは登録先」に続く項目を使用する必要があります。

ステップ6) Grid Console 画面が表示され、ハブが稼働中であることが示されます。

Selenium JSONファイルを使用したグリッド構成

JSON を使用して NODE を構成する

ステップ1) から提供されるサンプル ノード構成ファイルをダウンロードします。 Selenium 下記を使用して URL

https://github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/java/server/src/org/openqa/grid/common/defaults/DefaultNode.json

注: Selenium 3.0以上を使用している場合は、以下のJSONファイルを使用する必要があります。

https://github.com/SeleniumHQ/selenium/blob/selenium-3.141.59/java/server/src/org/openqa/grid/common/defaults/DefaultNodeWebDriver.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キーを押すと以下の画面が表示されます

JSON を使用してノードを構成する

ステップ5) グリッド コンソールに移動して、ノードが正常に構成されているかどうかを確認します。

JSON を使用してノードを構成する

ブラウザはグリッド コンソールに表示されます。したがって、ノードが正常に構成されていることを確認できます。

サンプル テスト ケースがオン 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ブラウザを起動し、 URL 'base' で指定されていますURL変数。ページに「モバイルテスト」というリンク名が表示されていることを確認しました。

URL ノード上でURL変数はリモートマシンのIPアドレスを反映するように変更できます。テスト結果はデフォルト値で確認できます。 TestNG 生成されたレポート

よくあるご質問

ハブは、テストをロードしてグリッドを管理する単一の中央マシンです。ノードは、特定のブラウザとOSの組み合わせで実際にテストを実行するマシンです。グリッドは、1つのハブと1つ以上のノードで構成されます。

Grid 1 は別のリモコンを使用し、Apache Ant を必要とし、 Selenium RCスクリプトとコントロールごとに1つのブラウザ。Grid 2には、 Selenium サーバー用jarファイルで、Antは不要、RCとWebDriverの両方のスクリプトをサポートしています。

DesiredCapabilities オブジェクトを作成し、browserName と platform を設定してから、ノードを指す RemoteWebDriver に渡します。 URLグリッドは、そのブラウザとOSに対応するノードにテストをルーティングします。

AIは、テスト実行の優先順位付けと並列化、不安定なテストの予測、ノード間の負荷分散、および破損したロケーターの自己修復を行うことができます。これにより、多数のブラウザとOSの組み合わせで動作する大規模なグリッドにおける実行時間とメンテナンスの手間を削減できます。

はい。AIツールは最適なノード数を推奨し、JSON構成を生成し、キューの長さに基づいてクラウドグリッドを自動スケーリングし、使用されていない容量を検出できます。ping チームは、手動による調整なしに、大規模なテストスイートを効率的に実行できます。