毎年、世界中のテスト自動化エンジニアが最新のツールと手法を研究して、テスト自動化環境をより安定し、より速く、より使いやすく、保守しやすくしています。これは、フレームワークが社内で常に大規模に実装されていることを確認するために不可欠です。いずれにせよ、肥大化した時代遅れのフレームワークはすぐに時代遅れになります。
Selenium Gridは、セットアップが難しく、不安定で、CIパイプラインでの展開やバージョン制御が難しいことが知られています。より簡単で安定した便利な方法は、ビルド済みのSeleniumDockerイメージを使用することです。
注:この方法の唯一の欠点は、現在Windowsオペレーティングシステムをコンテナーに入れることができないため、IE(Internet Explorer)でサポートされていないことです。
仕事の準備
開始するには、最初にDockerとDockerComposeをマシンにインストールする必要があります。Windows 10またはMacを使用している場合、両方ともDockerDesktopを使用してインストールされます。
グリッドの実行
公式のSeleniumDocker Hubリポジトリには、Selenium Hub、Firefox、およびChromeノード用に事前に作成されたDockerイメージが含まれています。
ローカルのSeleniumGridでそれらを使用する最も簡単な方法は、プロジェクトのルートディレクトリにDockerComposeファイルを作成することです。ファイルに単純に名前を付けます
docker-compose.yml。
次のグリッドを作成する例を以下に含めました。
- 1つのセレニウムハブ
- 1つのChromeノード
- 1つのFirefoxノード
#docker-compose.yml
version: "3"
services:
selenium-hub:
image: selenium/hub:3.141.59-neon
container_name: selenium-hub
ports:
- "4444:4444"
chrome:
image: selenium/node-chrome:3.141.59-neon
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
firefox:
image: selenium/node-firefox:3.141.59-neon
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
Docker Composeファイルには、グリッドの設定方法が記述されています。Docker Composeファイルの作成の詳細については、公式ドキュメントを参照してください。
グリッドを起動するには、任意のターミナル(
PowerShellまたはcmdWindows)を使用して、プロジェクトのルートディレクトリから次のコマンドを実行します。
docker-compose up
グリッド接続
ハブはローカルマシンのポート4444でリッスンしているため、通常と同じ方法でSeleniumグリッドに接続できます。これは、Chromeノードを使用するようにドライバーを構成した例です。
// Driver.java
protected static RemoteWebDriver browser;
DesiredCapabilities cap = new DesiredCapabilities();
ChromeOptions chromeOptions = new ChromeOptions();
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
cap.setBrowserName("chrome");
driver = new RemoteWebDriver(cap);
次に、TestNGライブラリを使用して、通常どおり複数のノードでテストを並行して実行できます。
各ノードで複数のブラウザを起動できることは注目に値します。ただし、これは推奨されません。ノードごとに1つのブラウザーを使用することは、最適なパフォーマンスを得るためのベストプラクティスと見なされます。
追加のヒントとコツ
テストをデバッグするためにブラウザで何が起こっているかを確認したい場合は、ブラウザノードをロードする
debugバージョンのdocker-compose.ymlファイルをdebug 用意する価値があります。これらにはVNCサーバーが含まれているため、テストの実行中にブラウザーを見ることができます。
ヘッドレスブラウザを実行して速度を上げることも可能で(通常の方法)、Seleniumは
base画像のバージョンも提供するため、追加のソフトウェアをインストールする必要がある場合は、独自の画像を作成できます。
グリッドをKubernetesまたはSwarmにデプロイして、CIパイプライン用の安定したバージョンのグリッドを作成することもできます。これにより、障害が発生した場合にドッカーを迅速に回復または交換できます。
続きを読む:
- Selenium: 1 — 2
- Selenium: 3 — 5