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 をインストールできます:
- アクセスして、Oracle Java 或 OpenJDKお使いのオペレーティングシステムに適した Java バージョンをダウンロードします。
- Java をインストールし、環境変数を設定します。
2.2 Selenium Server のダウンロード
Selenium Server は Selenium Grid のコアコンポーネントです。次からダウンロードできます:Selenium 公式サイト最新バージョンの Selenium Server をダウンロードします。
- ダウンロード
selenium-server-<version>.jarファイル。 - ダウンロードしたファイルを適切なディレクトリに保存します。
2.3 Hub の起動
Java と Selenium Server の設定が完了したら、Hub を起動できます。コマンドラインツールを開き、保存したselenium-server-<version>.jarのディレクトリに移動し、次のコマンドを実行します:
例
これで Hub が起動します。デフォルトでは、Hub はポート 4444 をリッスンします。ブラウザで次のアドレスにアクセスして、http://localhost:4444Hub の状態を確認できます。
2.4 Node の起動
次に、テストタスクを実行するために 1 つ以上の Node を起動する必要があります。別のマシンまたは同じマシンの別のターミナルで、次のコマンドを実行します:
例
ここで、<hub-ip>は Hub があるマシンの IP アドレスです。Hub と Node が同じマシンにある場合は、次を使用できます:localhost。
2.5 Node のブラウザとオペレーティングシステムの設定
コマンドライン引数を使用して、Node のブラウザとオペレーティングシステムを設定できます。例えば、次のコマンドは Chrome と Firefox ブラウザをサポートする Node を設定します:
例
3. リモートでのテスト実行
Selenium Grid の設定が完了したら、テストスクリプトを作成してリモートでテストを実行できます。以下は Selenium 4 に基づく Python の例です。
3.1 Selenium Python バインディングのインストール
まず、Selenium の Python バインディングをインストールする必要があります:
例
3.2 テストスクリプトの作成
以下は、Selenium Grid を介してリモートノードでテストを実行する簡単なテストスクリプトです:
例
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 を起動し、負荷分散を設定することで、テストの並行処理能力を向上させることができます。
その他の拡張