はじめに
- Seleniumのgithubにdocker-seleniumと言うものがあったので、こちらの環境を設定して起動してみる。 github.com
Selenium Gridとは
Selenium Gridは、複数のマシンでテストを並行して簡単に実行できるようにする。スマートなプロキシサーバー。これは、1つのサーバーがハブとして機能する。リモートWebブラウザーインスタンスにコマンドをルーティングすることによって行われる。 このハブは、JSON形式のテストコマンドを複数の登録済みグリッドノードにルーティングできる。
複数のマシンでテストを同時に実行し、ブラウザーごとに異なるテストを実行することができる。ブラウザーを一元的に管理できる。Selenium Gridを使用すると、複数のマシンとブラウザーで1つのテストをまとめて実行できるため、クロスブラウザーのテストが簡単になり、結果の分析と比較が簡単になります。
Hubとは
WebDriverクライアントからのアクセス要求を受け入れ、JSONテストコマンドをノード上のリモートドライブにルーティングするサーバーです。 クライアントからの指示を受け取り、それらをさまざまなノードで並行してリモートで実行します
ノードとは
ネイティブOSとリモートWebDriverで構成されるリモートデバイスです。JSONテストコマンドの形式でハブからリクエストを受け取り、WebDriverを使用してそれらを実行します
始めに試したこと
Docker Composeのサンプルがサイトにあったので、それを試しに実行した。
上記の設定を元に自分の開発環境で docker-compose up -dを実行してサイトにアクセスしたところ
Habとノードの連携が取れていないことを確認する
version: "2"
services:
(※ Web 及び DBのコンテナーの指定をする)
chrome:
image: selenium/node-chrome:4.0.0-beta-1-prerelease-20201202
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
ports:
- "6900:5900"
selenium-hub:
image: selenium/hub:4.0.0-beta-1-prerelease-20201202
container_name: selenium-hub
ports:
- "4442:4442"
- "4443:4443"
- "4444:4444"
実際に成功した設定
- 下記の設定を試して再度、
docker-compose up -dを実行する
version: "2"
services:
(※ Web 及び DBのコンテナーの指定をする)
hub:
image: selenium/hub
ports:
- "4444:4444"
environment:
GRID_MAX_SESSION: 16
GRID_BROWSER_TIMEOUT: 3000
GRID_TIMEOUT: 3000
chrome:
image: selenium/node-chrome
container_name: web-automation_chrome
depends_on:
- hub
environment:
HUB_PORT_4444_TCP_ADDR: hub
HUB_PORT_4444_TCP_PORT: 4444
NODE_MAX_SESSION: 4
NODE_MAX_INSTANCES: 4
volumes:
- /dev/shm:/dev/shm
ports:
- "9001:5900"
links:
- hub
実行結果
- 下記のようにhubとノードが連携されており、chromのインスタンスが4つ起動していることを確認できた。
あとはこちらを元にテストを書いていけたらいいなぁと思っております。
