はじめに
- 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つ起動していることを確認できた。 あとはこちらを元にテストを書いていけたらいいなぁと思っております。