SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「日本Seleniumユーザーコミュニティ」のエキスパートが教えるSelenium最新事情

DockerでSelenium Gridを構築して複数マシンのブラウザ自動テストを行う


  • X ポスト
  • このエントリーをはてなブックマークに追加

Selenium Gridの構築

 Seleniumが公式でメンテナンスしているDockerイメージはこちらにあります。たくさんのイメージがありますが、Selenium Gridの構築に必要なものにしぼって実際の構築方法を説明していきます。

ハブの起動

 selenium/hubが、Selenium Gridのハブ用のイメージになります。本記事では、2017年10月時点での最新版である3.6.0-bromineを利用します。

 ちなみに、SeleniumのDockerイメージは利用されているSelenium WebDriverのバージョン+ABC順の元素の名前でバージョン付がされています。例えば、WebDriverにアップデートがないまま、Chrome Driverがリリースされた場合や、Dockerイメージ自体の改善があった場合は、元素の名前が更新されていきます。

 以下のコマンドで起動すると、4444ポートでハブが立ち上がります。

$ docker pull selenium/hub:3.6.0-bromine
$ docker run --rm -d -p 4444:4444 --name selenium-hub selenium/hub:3.6.0-bromine

 http://localhost:4444/grid/consoleにアクセスすると、以下のようなハブのコンソール画面が表示されていることがわかります。

Selenium Grid Console
Selenium Grid Console

ノードの起動

 Selenium Gridのノード用のイメージにはnode-の接頭辞がつきます。公式ではGoogle ChromeとFirefoxとPhantomJSのブラウザ用Dockerイメージがメンテナンスされています。

 本記事では、selenium/node-chromeを利用した例を説明しますが、例えばselenium/node-firefoxでも同様の手順になりますので、適宜読み替えてください。

$ docker pull selenium/node-chrome:3.6.0-bromine
$ docker run --rm -d --link selenium-hub:hub selenium/node-chrome:3.6.0-bromine

 既に起動してあるselenium-hublinkしてnode-chromeコンテナを起動します。すると、ノードがハブに接続していることがSelenium Gridのコンソール画面からも確認できます。

Selenium Gridにノードを接続
Selenium Gridにノードを接続

 これで、http://localhost:4444/wd/hubにWebDriverクライアントを接続すると、Google Chromeを利用したブラウザ自動操作ができます。

 また、ブラウザはコンテナ内で起動するため、例えば自分のPCでSeleniumを使ったブラウザ自動操作スクリプトを実行したときのように、起動したブラウザに画面のフォーカスをとられ作業効率が落ちてしまうというようなことが発生しなくなります。

 Dockerを使ったSelenium環境の構築はCI環境はもちろん、ローカルでブラウザ自動操作スクリプトを開発するときにも有効です。

VNCでの動作確認

 ただし、コンテナ内でブラウザが起動するということは、ブラウザが動いている様子もみることができないということです。

 そこで、selenium/node-chrome-debugといった、-debugという接尾辞がついたコンテナイメージが用意されています。このイメージは、VNCサーバも起動するので、そこにVNCクライアントで接続することで、ブラウザの動作状況等を確認することができます。

$ docker pull selenium/node-chrome-debug:3.6.0-bromine
$ docker run --rm -d -P --link selenium-hub:hub selenium/node-chrome-debug:3.6.0-bromine
$ docker ps
CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS              PORTS                     NAMES
cdaffeb1b08c        selenium/node-chrome-debug:3.6.0-bromine   "/opt/bin/entry_po..."   4 seconds ago       Up 3 seconds        0.0.0.0:32768->5900/tcp   epic_goodall
cdaa51487791        selenium/hub:3.6.0-bromine                 "/opt/bin/entry_po..."   3 minutes ago       Up 3 minutes        0.0.0.0:4444->4444/tcp    selenium-hub

 node-chrome-debugを起動後docker psすると、ローカルの32768番ポートがコンテナのVNCサーバのポートである5900に向いていることがわかります(実行環境によって異なりますので適宜読み替えてください)。したがってこの場合だと、vnc://localhost:32768に適当なVNCクライアントで接続することができます。なお、VNCサーバはデフォルトではsecretというパスワードが設定されています。

VNCでのデバッグ
VNCでのデバッグ

 これにより、ブラウザの挙動をみたり、ローカルのブラウザと同じようにDeveloper ToolsでDOMを確認したりすることができます。

次のページ
Zaleniumを使ったSelenium Gridの構築

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
「日本Seleniumユーザーコミュニティ」のエキスパートが教えるSelenium最新事情連載記事一覧

もっと読む

この記事の著者

沖田 邦夫(オキタ クニオ)

 精密機器メーカーにて新規事業開発のAPI・インフラ・システムアーキテクチャの設計・開発・テストを一通り経験後にDeNAに入社。 現在はテストエンジニアリングを担う部署であるSWET(Software Engineer in Test)グループのリーダー。 「Selenium実践入門」の共同執筆、雑誌「Web+DB PRESS」への寄稿も行っている。 Twitter:@okitan github:https://github.com/okitan

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10471 2017/12/19 14:57

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング