LoginSignup
52
62

More than 5 years have passed since last update.

Docker で Selenium Grid による並列実行環境を構築

Last updated at Posted at 2015-04-12

:black_square_button: 前提

  • Docker インストール&設定済み

Docker 超入門 〜 Boot2Docker 導入から HelloWorld まで〜

:black_square_button: Docker Image 取得

から selenium/hub と selenium/node-chrome-debugをとってくる

$ docker run -d -p 4444:4444 --name selenium-hub selenium/hub
$ docker run -d -v /dev/urandom:/dev/random -P --link selenium-hub:hub selenium/node-chrome-debug:

でHub と Node を起動

boot2docker ip確認

$ boot2docker ip

コンテナ確認


$ docker ps

CONTAINER ID        IMAGE                               COMMAND                CREATED             STATUS              PORTS                     NAMES
e5cb8aa82960        selenium/node-chrome-debug:latest   "/opt/bin/entry_poin   25 hours ago        Up 5 seconds        0.0.0.0:49154->5900/tcp   gloomy_sinoussi
d495bfc3d1dd        selenium/hub:latest                 "/opt/bin/entry_poin   25 hours ago        Up 4 minutes        0.0.0.0:4444->4444/tcp    selenium-hub

ポート確認

$ docker port e5cb8aa82960

5900/tcp -> 0.0.0.0:49154

下記へアクセス

http://<boot2docker-ip>:4444/grid/console

:black_square_button: VNCへ接続する

Macでのboot2docker は VNCクライアントが既に入っているので
SafariかAlfredで下記にアクセス

vnc://<boot2docker-ip>:49154

パスワードが聞かれるので、デフォルトは「secret」を入力すると、こんな画面がでてくる。

:black_square_button: selenium grid上で selenium webdriver を動かしてみる

サンプルスクリプトはこんな感じ

# google.rb

require 'rubygems'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for :remote, url: 'http://<boot2docker-ip>:4444/wd/hub', desired_capabilities: :chrome

driver.navigate.to "http://google.com"
driver.save_screenshot "google.png"

driver.quit

ruby google.rb で実行!!

スクショとれてますよ〜。感動!!

:black_square_button: ノード数を増やして、並列実行やってみる

figを使ってみる。

brew install fig

yaml形式です。

# docker-compose.yml

hub:
  image: selenium/hub
  ports:
    - "4444"

node:
  image: selenium/node-chrome-debug
  ports:
    - "5900"
  links:
    - hub

起動してみる

$ fig up -d

Creating seleniumgrid_hub_1...
Creating seleniumgrid_node_1...

ノード数を増やしてみる

$ fig scale node=10

Creating seleniumgrid_node_2...
Creating seleniumgrid_node_3...
Creating seleniumgrid_node_4...
Creating seleniumgrid_node_5...
Creating seleniumgrid_node_6...
Creating seleniumgrid_node_7...
Creating seleniumgrid_node_8...
Creating seleniumgrid_node_9...
Creating seleniumgrid_node_10...
Starting seleniumgrid_node_2...
Starting seleniumgrid_node_3...
Starting seleniumgrid_node_4...
Starting seleniumgrid_node_5...
Starting seleniumgrid_node_6...
Starting seleniumgrid_node_7...
Starting seleniumgrid_node_8...
Starting seleniumgrid_node_9...
Starting seleniumgrid_node_10...

増えてる。増えてる。

コンテナ確認

$ docker ps


CONTAINER ID        IMAGE                               COMMAND                CREATED             STATUS              PORTS                     NAMES
848cfbfea229        selenium/node-chrome-debug:latest   "/opt/bin/entry_poin   27 seconds ago      Up 21 seconds       0.0.0.0:49165->5900/tcp   seleniumgrid_node_10
aefd6e22fc38        selenium/node-chrome-debug:latest   "/opt/bin/entry_poin   28 seconds ago      Up 22 seconds       0.0.0.0:49164->5900/tcp   seleniumgrid_node_9
31a5deab92f6        selenium/node-chrome-debug:latest   "/opt/bin/entry_poin   28 seconds ago      Up 23 seconds       0.0.0.0:49163->5900/tcp   seleniumgrid_node_8
9a1f2b57d2fd        selenium/node-chrome-debug:latest   "/opt/bin/entry_poin   28 seconds ago      Up 24 seconds       0.0.0.0:49162->5900/tcp   seleniumgrid_node_7
e8248a7f54f1        selenium/node-chrome-debug:latest   "/opt/bin/entry_poin   28 seconds ago      Up 25 seconds       0.0.0.0:49161->5900/tcp   seleniumgrid_node_6
3ffe25779686        selenium/node-chrome-debug:latest   "/opt/bin/entry_poin   28 seconds ago      Up 25 seconds       0.0.0.0:49160->5900/tcp   seleniumgrid_node_5
112ab5748233        selenium/node-chrome-debug:latest   "/opt/bin/entry_poin   28 seconds ago      Up 26 seconds       0.0.0.0:49158->5900/tcp   seleniumgrid_node_3
1cd0614af078        selenium/node-chrome-debug:latest   "/opt/bin/entry_poin   28 seconds ago      Up 27 seconds       0.0.0.0:49157->5900/tcp   seleniumgrid_node_2
f205fe9716a0        selenium/node-chrome-debug:latest   "/opt/bin/entry_poin   28 seconds ago      Up 26 seconds       0.0.0.0:49159->5900/tcp   seleniumgrid_node_4
04690c0dcea8        selenium/node-chrome-debug:latest   "/opt/bin/entry_poin   56 seconds ago      Up 55 seconds       0.0.0.0:49156->5900/tcp   seleniumgrid_node_1
64cecc30b7b2        selenium/hub:latest                 "/opt/bin/entry_poin   57 seconds ago      Up 56 seconds       0.0.0.0:49155->4444/tcp   seleniumgrid_hub_1
e5cb8aa82960        selenium/node-chrome-debug:latest   "/opt/bin/entry_poin   26 hours ago        Up About an hour    0.0.0.0:49154->5900/tcp   gloomy_sinoussi
d495bfc3d1dd        selenium/hub:latest                 "/opt/bin/entry_poin   26 hours ago        Up About an hour    0.0.0.0:4444->4444/tcp    selenium-hub

増えてる。増えてる。

$ docker port seleniumgrid_hub_1

4444/tcp -> 0.0.0.0:49155
http://<boot2docker-ip>:49155/grid/console

へアクセス。

増えてる。増えてる。

並列実行する際は

driver = Selenium::WebDriver.for :remote, url: 'http://<boot2docker-ip>:49155/wd/hub', desired_capabilities: :chrome

にして実行すれば流れる感じっすね。

:black_square_button: Special Thanks

Docker Hub の Selenium Hub/Node イメージ + fig で Selenium Grid 構築してみた - Thanks Driven Life

Docker で Selenium Grid の環境構築をもっと楽に! | Cybozu Inside Out | サイボウズエンジニアのブログ

Docker Hub Registry - Repositories of Docker Images

52
62
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
52
62