[Python]Selenium GridをDocker-composeで一瞬で動かす

Selenium-Docker

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

[/code]

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
python tests/sample.py

これでsampleプログラムが実行され、Seleniumが起動します。

VNCを使ってSeleniumの動作確認

どんなふうに動いているか確認するにはVNCでlocalhostの5900ポートにアクセスします。

MacならFinderの「移動ーサーバーに接続」から

Macサーバーに接続

vnc://localhost:5900 で接続するとSeleniumに動作画面が確認できます。

※ vnc://127.0.0.1:5900 でも接続できます。

Macサーバーに接続

ログイン時にパスワードが求められます。パスワードは secret です。

MacVNCSeleniumGridPassword

こんな風に確認できます。

SeleniumGridTestVNC

 

Dockerコンテナとフォルダを共有

ローカルのselenium-grid-sampleの中のtestsフォルダはPythonコンテナの/root/testsとフォルダを共有しているので、ローカルでの変更がコンテ内に反映されます。

先程のsample.pyを実行するとscreenshots.pngというファイルがローカルのtestsの中に保存されているのが確認できます。

リアルタイムで編集した内容をテストする方法は?

sample.pyを編集してPythonコンテナから実行するだけです。

Dockerコンテナの中から

Python
python tests/sample.py

を実行すれば変更した内容をすぐにテストてきます。

その他、新しいPythonファイルを作成して実行することもできます。

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ライフを!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.