-
Selenium Dockerを使用したSelenium実行環境(Docker Compose環境)
- 2017年12月28日
- docker
- docker compose
- microsoft edge
- selenium
- Selenium WebDriver
Selenium Dockerについて
Selenium Dockerを使用すると次のような課題を解決できます。- Seleniumのスクリプト開発時、スクリプトを変更するPCで動作確認すると作業が止まる
- 仮想マシンを実行するにはメモリがきつい
- 他のPCで実行するにはスクリプトのファイル共有が面倒
前提
Mac上でDockerを動作させています。 WindowsではDockerの動作に仮想マシンが必要なので、あまり恩恵がありません。 Dockerは公式サイトからインストールして起動してください。 Docker for Macなら下記で使用するdocker-composeも同時にインストールされます。Selenium環境起動用スクリプト
下記の設定ファイルをdocker-compose.yml
として保存。
設定ファイルを保存したフォルダで、下記コマンドを実行すると起動します。
docker-compose build docker-compose upSeleniumの接続先に
http://dockerを実行中のマシンのIP:4444/wd/hub
、CapabilitiesでChromeを指定で接続できます。
下記の設定ファイル使用すると、vncでlocalhost:5900に接続、テスト中のブラウザを表示できます。
MacならFinderからサーバへ接続を選択し、接続先:vnc://localhost:5900/、パスワード:secretを入力すると接続できます。
注意点
Mac上のDockerでホストのファイルシステムに書き込みすると、 少しずつcom.docker.osxfsプロセスのメモリ使用量が増えていきます。 下記のチケットを見る限り、完全な回避策はなさそうです。 https://github.com/docker/for-mac/issues/1287 dockerをrestartするとメモリを消費しているcom.docker.osxfsプロセスも再起動でき、メモリの消費量は起動直後の状態に戻ります。スクリプトについて
上記のスクリプトを起動した場合、下記の環境を構築します。Selenium Hub └ Node(Linux + Chrome)
同時実行数を増やす
Seleniumを同時に実行する環境を増やしたい場合、下記のコマンドでNode(Linux + Chrome)の数を変更することができます。別ターミナルからの入力でも大丈夫です。docker-compose scale chrome=2コマンド実行後の構成は次のようになります。
Selenium Hub ├ Node(Linux + Chrome) └ Node(Linux + Chrome)
Firefoxの実行環境を追加する
Firefoxを動作させたい場合、docker-compose.ymlへ下記の設定を加えることで、Node(Linux + Firefox)を追加できます。firefox: image: selenium/node-firefox environment: - HUB_PORT_4444_TCP_ADDR=hub - HUB_PORT_4444_TCP_PORT=4444 depends_on: - hub
EdgeをSeleniumHubに追加する
Windows上のSeleniumの実行環境が必要です。 Selenium公式サイトからSelenium Standalone Serverをダウンロードしてください。 Edgeでの動作を確認する場合はMircosoftが提供しているEdge向けのWebDriverが必要です。Windows10のビルドバージョンに合わせてWebDriverを選んでください。IE11の場合はIE用のDriverに加えてインターネットオプションの変更も必要です。 上記ページのVirtual Machineではテスト用のWindows仮想マシンも提供されています。 Selenium Serverおよび設定ファイルを用意したうえで、コマンドプロンプトから次のコマンドを実行すると、Selenium HubへEdgeのNodeを追加できます。「3.8.1」の箇所はバージョンに応じて書き換えてください。java -jar selenium-server-standalone-3.8.1.jar -role node -nodeConfig node.json設定ファイルは下記の内容をnode.jsonとして保存してください。「HUBのIPアドレス」は環境に応じて書き換えが必要です。 仮想マシンを使用していると、NAT接続ではHubからNodeへの接続を上手くさばいてくれません。PCの外の環境に依存してしまいますが、Bridge接続で回避すると楽です。
まとめ
以上のとおり、Selenium Dockerを使用して便利なテスト環境を構築することができます。 Jenkinsもdocker環境で動作させ、Docker Composeでまとめて管理すればCI環境をportableにできて便利です(Jenkinsの設定をbackup/restoreする仕組みは必要です)。この記事を書いた人 : 井上貴博
スタッフブログタグ:
AWS bluebird css CSV docker docker compose electron ES6 es2015 Git Heroku ITコンサルティング JavaScript justinmind less mongoDB Node.js php PostgreSQL Private Space Promise React react-router reactjs Salesforce scss Selenium Builder selenium IDE Selenium WebDriver stylus TypeScript VirtualBox VisualStudioCode vue vuejs webpack システム開発プロジェクト セキュリティ ワイヤーフレーム 上流工程 卒FIT 帳票 要件定義 設計 電力小売業界
一覧へ戻る
AWS bluebird css CSV docker docker compose electron ES6 es2015 Git Heroku ITコンサルティング JavaScript justinmind less mongoDB Node.js php PostgreSQL Private Space Promise React react-router reactjs Salesforce scss Selenium Builder selenium IDE Selenium WebDriver stylus TypeScript VirtualBox VisualStudioCode vue vuejs webpack システム開発プロジェクト セキュリティ ワイヤーフレーム 上流工程 卒FIT 帳票 要件定義 設計 電力小売業界