Selenium Grid

1、Selenium Grid の紹介

Selenium Grid は Selenium スイートの重要なコンポーネントであり、複数の異なるマシン、ブラウザ、オペレーティングシステム上でテストを並行して実行できます。

Selenium Grid を使用すると、分散テストを実現でき、テスト効率が向上し、テスト時間を短縮できます。

Selenium Grid の核となる考え方は、テストタスクを複数のノード(Node)に分散して実行し、これらのノードを中央ノード(Hub)が一元管理するというものです。

1.1 Selenium Grid の主な機能

  • 並列テスト:複数のブラウザとオペレーティングシステム上で同時にテストを実行でき、テスト時間を大幅に短縮できます。
  • クロスブラウザテスト:さまざまなブラウザ(Chrome、Firefox、Edge など)でテストを実行でき、さまざまな環境でのアプリケーションの互換性を保証します。
  • クロスプラットフォームテスト:さまざまなオペレーティングシステム(Windows、macOS、Linux など)でテストを実行でき、異なるプラットフォームでのアプリケーションの動作を検証します。
  • 動的拡張:必要に応じてノードを動的に追加または削除でき、テスト要件の変化に柔軟に対応できます。

1.2 Selenium Grid のアーキテクチャ

Selenium Grid は Hub-Node アーキテクチャを採用しています:

  • Hub:中央ノード。テストリクエストを受け取り、タスクを適切なノードに分散して実行します。
  • Node:実行ノード。実際にテストタスクを実行します。各ノードは異なるブラウザとオペレーティングシステムを設定できます。

2、Selenium Grid の設定

Selenium Grid の使用を開始する前に、いくつかの基本的な設定を行う必要があります。以下は Selenium 4 に基づく設定手順です。

2.1 Java のインストール

Selenium Grid は Java 実行環境に依存しているため、まず Java をインストールする必要があります。次の手順で Java をインストールできます:

  1. アクセスして、Oracle Java 或 OpenJDKお使いのオペレーティングシステムに適した Java バージョンをダウンロードします。
  2. Java をインストールし、環境変数を設定します。

2.2 Selenium Server のダウンロード

Selenium Server は Selenium Grid のコアコンポーネントです。次からダウンロードできます:Selenium 公式サイト最新バージョンの Selenium Server をダウンロードします。

  1. ダウンロードselenium-server-<version>.jarファイル。
  2. ダウンロードしたファイルを適切なディレクトリに保存します。

2.3 Hub の起動

Java と Selenium Server の設定が完了したら、Hub を起動できます。コマンドラインツールを開き、保存したselenium-server-<version>.jarのディレクトリに移動し、次のコマンドを実行します:

例

java -jar selenium-server-<version>.jar hub

これで Hub が起動します。デフォルトでは、Hub はポート 4444 をリッスンします。ブラウザで次のアドレスにアクセスして、http://localhost:4444Hub の状態を確認できます。

2.4 Node の起動

次に、テストタスクを実行するために 1 つ以上の Node を起動する必要があります。別のマシンまたは同じマシンの別のターミナルで、次のコマンドを実行します:

例

java -jar selenium-server-<version>.jar node --hub http://<hub-ip>:4444

ここで、<hub-ip>は Hub があるマシンの IP アドレスです。Hub と Node が同じマシンにある場合は、次を使用できます:localhost。

2.5 Node のブラウザとオペレーティングシステムの設定

コマンドライン引数を使用して、Node のブラウザとオペレーティングシステムを設定できます。例えば、次のコマンドは Chrome と Firefox ブラウザをサポートする Node を設定します:

例

java -jar selenium-server-<version>.jar node --hub http://<hub-ip>:4444 --browser "browserName=chrome" --browser "browserName=firefox"

3. リモートでのテスト実行

Selenium Grid の設定が完了したら、テストスクリプトを作成してリモートでテストを実行できます。以下は Selenium 4 に基づく Python の例です。

3.1 Selenium Python バインディングのインストール

まず、Selenium の Python バインディングをインストールする必要があります:

例

pip install selenium

3.2 テストスクリプトの作成

以下は、Selenium Grid を介してリモートノードでテストを実行する簡単なテストスクリプトです:

例

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# Desired Capabilities の設定
capabilities = DesiredCapabilities.CHROME.copy()
capabilities['platform'] = 'WINDOWS'  # オペレーティングシステムの指定
capabilities['version'] = 'latest'    # ブラウザバージョンの指定

# Selenium Grid Hub への接続
driver = webdriver.Remote(
    command_executor='http://<hub-ip>:4444/wd/hub',
    desired_capabilities=capabilities
)

# テストの実行
driver.get("https://www.example.com")
print(driver.title)
driver.quit()

3.3 テストスクリプトの実行

スクリプトを保存して実行します。スクリプトは Selenium Grid Hub を介してテストタスクを適切な Node に分散して実行します。


4、Selenium Grid の詳細設定

4.1 Node のブラウザとオペレーティングシステムの設定

Node を起動するときに、パラメータでサポートするブラウザとオペレーティングシステムを指定できます:

java -jar selenium-server-<version>.jar node --hub http://<hub-ip>:4444 --browser "browserName=chrome,platform=WINDOWS"

4.2 Docker を使用した Selenium Grid の実行

Selenium は公式の Docker イメージを提供しており、Hub と Node をすばやく起動できます:

# 启动 Hub
docker run -d -p 4444:4444 --name selenium-hub selenium/hub

# 启动 Node
docker run -d --link selenium-hub:hub selenium/node-chrome

4.3 Grid の負荷分散の設定

複数の Hub と Node を起動し、負荷分散を設定することで、テストの並行処理能力を向上させることができます。

その他の拡張