Selenium GridをDockerを使って動かしたい!と思っている人は必見です。
数行のコードでSelenium Gridを使えるようになります。
selenium-grid-sampleをダウンロード・セットアップ
まずはソースコードをGitHubからダウンロードします。
[code]git clone https://github.com/sleepless-se/selenium-grid-sample.git
[/code]フォルダの中に移動してDockerComposeをデーモンで起動します。
[code]cd selenium-grid-sample
docker-compose up -d
Pythonコンテナにアクセス
起動中のコンテナの一覧を取得し、Pythonが動いているコンテナのIDを確認します。ここでは73a16a6671d9になっています。
[code]docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
73a16a6671d9 python:3 “bash -c ‘pip instal…” 21 seconds ago Up 23 seconds python
c931fc66733e selenium/node-chrome-debug “/opt/bin/entry_poin…” 21 seconds ago Up 23 seconds 0.0.0.0:5900->5900/tcp selenium_chrome_1
66122bb339ae selenium/hub “/opt/bin/entry_poin…” 21 seconds ago Up 24 seconds 0.0.0.0:4444->4444/tcp selenium-hub
[/code]Pythonのコンテナに入ります。73a16a6671d9 のコンテナIDは適宜置き換えてください。
[code]docker exec -it 73a16a6671d9 /bin/bash
[/code]毎回IDを確認するのが面倒な人はこちらでもPythonコンテナに入れます。
[code]docker exec -it python /bin/bash
[/code]ログインするとカレントディレクトリがrootディレクトリになっています。
testsというフォルダの中にsample.pyというファイルがあるのでこれを実行します。
python tests/sample.py
これでsampleプログラムが実行され、Seleniumが起動します。
VNCを使ってSeleniumの動作確認
どんなふうに動いているか確認するにはVNCでlocalhostの5900ポートにアクセスします。
MacならFinderの「移動ーサーバーに接続」から
vnc://localhost:5900 で接続するとSeleniumに動作画面が確認できます。
※ vnc://127.0.0.1:5900 でも接続できます。
ログイン時にパスワードが求められます。パスワードは secret です。
こんな風に確認できます。
Dockerコンテナとフォルダを共有
ローカルのselenium-grid-sampleの中のtestsフォルダはPythonコンテナの/root/testsとフォルダを共有しているので、ローカルでの変更がコンテ内に反映されます。
先程のsample.pyを実行するとscreenshots.pngというファイルがローカルのtestsの中に保存されているのが確認できます。
リアルタイムで編集した内容をテストする方法は?
sample.pyを編集してPythonコンテナから実行するだけです。
Dockerコンテナの中から
python tests/sample.py
を実行すれば変更した内容をすぐにテストてきます。
その他、新しいPythonファイルを作成して実行することもできます。
python tests/新しいファイル名.py
DockerComposeを停止する
DockerComposeを停止するときは下記のコマンドで停止できます。
[code]docker-compose stop
[/code]※Seleniumはエラーになったまま、quit()で停止しないと再起動するか、プロセスをkillするまで起動しなくなるのでご注意ください。サンプルではエラーが出てもfinalを入れて、確実に quit()でSeleniumが停止するようにしています。
最後に
数行のコードでSeleniumGridを実行できる環境が作れましたね!
今回はPythonとChromeの組み合わせでしたが、docker-compose.yaml を編集すればJavaやRuby、など他の言語でも利用できます。
Firefoxで起動したい場合はdocker-compose.yamlのコメントアウトを外してください。
それではよいSeleniumライフを!
コメントを残す