アプリ開発において自動化しておきたいものにテストの自動化がある。


今までSOY CMS / ShopはSeleniumのFirefoxプラグインでGUIで一つずつ動作を登録しながらUIのテストコードを作成していたけれども、

Selenium - Web Browser Automation


Jenkinsさんのお力を借りて、

JenkinsさんにSeleniumを実行してもらうべく、

PHPのコードでSeleniumのUIテストのコードを書き直すことにした。

Jenkins


FacebookがSeleniumをPHPで記述できるようにするphp-webdriverというライブラリを公開しているので、php-webdriverを利用する。

facebook/php-webdriver: A php client for webdriver.


記述してみて、最初の慣れるまでは様々な細かい指示で苦労した。

その苦労をメモとして残しておく。

今回はSelenium + php-webdriverが使用できるようになるまでを記載する。




環境

OS : Ubuntu 17.04


最初にSeleniumのダウンロード

下記ページでSeleniumの最新版を調べておく

http://www.seleniumhq.org/download/


私が作業した時はSeleniumの最新版は3.7.1だったので、このバージョンでのインストール内容を記載する。


mkdir selenium
cd selenium
sudo wget http://selenium-release.storage.googleapis.com/3.7/selenium-server-standalone-3.7.1.jar
java -jar selenium-server-standalone-3.7.1.jar

ホームディレクトリ以下にseleniumディレクトリを設けて、そこでSeleniumを動かすことにしています。

※Seleniumのバックグラウンド実行の場合は最後の行の処理の後に&を付与

java -jar selenium-server-standalone-3.7.1.jar

続いて、Seleniumでどのブラウザを用いてUIテストを行うか?で

UIテスト用のブラウザのドライバをインストールしておく必要がある。


私が愛用しているのがChromiumなので、Chromiumで動かすためのChromeドライバーをインストールしておく。

※ChromeドライバはChromeとChromiumの両方を動かすことができる

The Chromium Projects


はじめに下記のサイトでChromeDriverのバージョンを調べておく。

https://sites.google.com/a/chromium.org/chromedriver/downloads


作業した時は2.33だったので、2.33で話を進める。

cd ~/download
wget http://chromedriver.storage.googleapis.com/2.33/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
sudo mv chromedriver /usr/local/bin

これでSeleniumでChromiumを操作できるようなった。


続いて、php-webdriverをインストールする必要があるんだけど、

その前にcomposerというPHP用のパッケージ管理をインストールしておく必要がある。


というわけで、

sudo curl -sS https://getcomposer.org/installer | php

これでcomposerをインストールする。


あとはphp-webdriverを入れて、コードを書き始めるところだけれども、

今回は/home/saito/workspace/soycms/以下でアプリの開発を行うので、

soycmsディレクトリ以下にphp-webdriverをインストールしてみる。


cd ~/workspace/soycms
php composer.phar require facebook/webdriver

※下記はcomposerのパスを通して実行を行いたいの場合

sudo curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
cd ~/workspace/soycms
composer require facebook/webdriver

これで準備OKだ。

次回、簡単なテストコードを書いてみる。