page_adsence

2016年4月2日土曜日

Dockerを利用してSeleniumのテスト環境を作る&WebDriverを使ってみる。

お手軽にSeleniumのテスト環境を作成する。

前提として
・CentOS7
・Docker1.8
・docker-compose1.5.2
・PHP
・composer
が導入済みの状態。

docker-compose.ymlには以下のように記載する。
selenium_chromeやselenium_firefoxで指定しているポート番号は任意で決めてもらってOK。
selenium_hub:
  image: docker.io/selenium/hub
  container_name: selenium-hub
  ports:
    - 4444:4444

selenium_chrome:
  image: docker.io/selenium/node-chrome-debug
  container_name: selenium-chrome
  ports:
    - 49154:5900
  links:
    - selenium_hub:hub

selenium_firefox:
  image: docker.io/selenium/node-firefox-debug
  container_name: selenium-firefox
  ports:
    - 49155:5900
  links:
    - selenium_hub:hub

コンテナを起動させる。
$ docker-compose up -d
こんな感じの状態になっていればOK
$ docker-compose ps
      Name                 Command           State            Ports
----------------------------------------------------------------------------
selenium-chrome      /opt/bin/entry_point.sh   Up      0.0.0.0:49154->5900/tcp
selenium-firefox       /opt/bin/entry_point.sh   Up      0.0.0.0:49155->5900/tcp
selenium-hub            /opt/bin/entry_point.sh   Up      0.0.0.0:4444->4444/tcp

で、composer.jsonは下記の様に記載して保存。
$ vi composer.json
{
    "require": {
        "phpunit/phpunit": "5.1.*",
        "phpunit/phpunit-selenium": "dev-master",
        "facebook/webdriver":"dev-master"
    }
}
composerコマンドで、上記のパッケージをインストールする。
$ composer install
とりあえずFirefoxを立ち上げて、自分のブログのページを表示させてみるスクリプトを書く。
$ vi test.php
<?php
require_once 'vendor/autoload.php';

$host   = 'http://VMのIP:4444/wd/hub';
$driver = RemoteWebDriver::create($host, DesiredCapabilities::firefox());
$driver->get('http://gyagya1111.blogspot.jp/');
で、実行する。
$ php test.php
VNCクライアントとかを使って、VMのIP:49155にアクセスすると、動いているのが見える。