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 構成ファイル経由です。

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

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

  • 求められる能力 のタイプを設定するために使用されます ブラウザ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) Webブラウザを開いて、以下の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ブラウザを起動し、「baseURL」変数で指定されたURLに移動します。ページに「Mobile Testing」というリンク名が表示されることを確認しました。

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

製品概要

  • Selenium グリッドは、異なるブラウザやプラットフォームで複数のテストを同時に実行するために使用されます。
  • グリッドはハブノードの概念を使用します。
  • ハブは、テストをロードする中心点です。
  • ノードは、 Selenium ハブにロードしたテストを実行するインスタンス。
  • インストールするには Selenium グリッド。ダウンロードするだけで済みます。 Selenium サーバー jar ファイル – 実行時に使用されるのと同じファイル Selenium RCテスト。
  • ハブが実行されているかどうかを確認するには 2 つの方法があります。XNUMX つはコマンド プロンプトを使用する方法、もう XNUMX つはブラウザを使用する方法です。
  • グリッド上でテスト スクリプトを実行するには、DesiredCapabilities オブジェクトと RemoteWebDriver オブジェクトを使用する必要があります。
  • DesiredCapabilites は、自動化するブラウザと OS の種類を設定するために使用されます。
  • RemoteWebDriver は、テストを実行するノード (またはマシン) を設定するために使用されます。