Selenium Gridとは
Seleniumには、複数のマシンで分散してブラウザ操作の自動化を実現するSelenium Gridという仕組みがあります。Selenium Gridを利用すると、Google ChromeやFirefoxやMicrosoft Edge等の多種多様なブラウザを一括で管理することができ、一つのテストスクリプトからクロスブラウザテスティングを行うことができます。
Selenium Gridは、ハブという管理サーバに、テストに必要なブラウザを持つノードが接続する構成をとります。これにより、テスト条件に合うノードが自動的に選択され、利用できるようになっています。
ハブには複数のノードが接続できますので、CI環境のように並列的にブラウザを動作させる必要がある環境でよく利用されています。
Dockerを使ってSelenium Gridを構築する
『Selenium実践入門』でもCI環境でのSelenium Gridの利用方法について書かれていますが、その当時に比べて、Dockerを代表とするコンテナ管理技術が一般的になってきました。
Seleniumは動作させるブラウザ以外にも必要なソフトウェアが多く、コンテナ技術とは相性がよいので、Dockerを使うことでSelenium Grid環境の管理コストを削減することができます。
公式のSeleniumHQがメンテナンスしているDockerイメージがあるので、そちらを使ってSelenium Gridをまずは紹介します。
なお、本記事では基本的なDockerのインストールやdockerコマンドの説明は行いません。Dockerの使い方については、英語になりますが公式チュートリアルなどをご参照ください。
また、2017年10月9日現在、以下の環境で動作確認を行っております。
- OS X El Capitan 10.11.6
- Docker for Mac 17.09.0-ce-mac35
- Ruby 2.4.1p111
- selenium-webdriver 3.6.0