PHPでSelenium2(WebDriver API)を使うための構成
Seleniumを使っての自動テスト環境を作るときに
いつも何がどの役割なのかわからなくなるので構築
方法をメモする。Seleniumの情報に古いのが多くて
結構はまった。
今回は簡易的なところまででJenkinsと連携して
自動ビルド&自動ユニットテスト&自動UIテストとかは
次の話しということで。
そもそもこのやり方がいいのかちょっとわからないです。。。
おかしなところあったら指摘してください。
■今回の構成
◆クライアントPC(実際にUIテストを行なうPC)
OS:Windows7 32bit
ブラウザ:IE9とFirefox16.0.2
Java:1.7.0_09
IP:192.168.1.10
◆サーバ
VMware上で。
OS:CentOS6.3
Webサーバ:Apache 2.2.15
PHP:5.4.8
PHPUnit:3.7.8
Java:1.7.0_09
IP:192.168.1.100
今回の構成ではクライアントPCとサーバの両方でselenium-server
を起動する形式にする。
selenium-serverはこちらのページの「Selenium Server (formerly the Selenium RC Server)」をダウンロードする。
※この時点でのバージョンは2.25.0
↑今回の構成図
サーバ側はSelenium Gridとして動かし分散実行にも備える。
クライアントPC側は役割をwebdriverとし、ハブとして
サーバ側で起動したSelenium Gridを指定して自身をテスト
マシンとして登録する。
■実際の実行手順
①サーバ側にselenium-serverを配置、役割をハブ(Selenium Grid)として実行。
※デフォルトは4444ポートで起動
$ java -jar selenium-server-standalone-2.25.0.jar -role hub
ブラウザでSelenium Gridの確認
http://192.168.1.100:4444/grid/console
②次にクライアントPCにselenium-serverを配置。役割をwebdriverとして起動。このときにサーバを指定。
※パスは読み替えてください。
C:\work>java -jar selenium-server-standalone-2.25.0.jar -role webdriver -hub http://192.168.1.100:4444/grid/register
この状態でサーバ側のSelenium Gridの画面を確認すると
クライアントPCが表示されているはず。
ブラウザでSelenium Gridの確認
http://192.168.1.100:4444/grid/console
ここまで設定を行えばあとはPHPUnitのテストケースで
「PHPUnit_Extensions_Selenium2TestCase」をextendsして
テストケースを作成し、実行を行えばクライアントPCで指定
したブラウザが立ち上がりテストが実行される。
記述方法はPHPUnitのページにあります。
サポートしているメソッドとか、実際の記述方法は
PHPUnit_Extensions_Selenium2TestCase のエンドツーエンドテストを確認してください。
以下実際に動かしたサンプルテストケース(SeleneseTest.php)
※seleniumのページを開いてtitleの内容をチェック。
※setHostに「192.168.1.100」、setPortに「4444」を指定する
class Selenese2Test extends PHPUnit_Extensions_Selenium2TestCase {
protected function setUp() {
$this->setHost("192.168.1.100");
$this->setPort(4444);
//$this->setBrowser("internet explorer");
$this->setBrowser("firefox");
$this->setBrowserUrl("https://www.google.co.jp/");
}
public function testMyTestCase()
{
$this->url('http://seleniumhq.org/');
$this->assertEquals('Selenium - Web Browser Automation', $this->title());
}
}
③テストケースを実行する。
$ phpunit SeleneseTest.php
PHPUnit 3.7.8 by Sebastian Bergmann.
.
Time: 14 seconds, Memory: 1.50Mb
OK (1 test, 1 assertion)
Selenium Grid経由で192.168.1.10のFirefoxが立ち上がりテストが始まる。
これで完了。
クライアントでIE9を使うとエラーが表示されるかもしれない。
こんなやつ↓
「リモートデバイスまたはリソースが接続を受け付けません」
これはブラウザの設定で「ツール」⇒「インターネットオプション」⇒「セキュリティ」で
全部のセキュリティゾーンの設定(保護モード)をそろえればいいということらしい。
Selenium2のInternetExplorerDriverでエラーになった
今回はSelenium Gridとphpunitの実行を同じサーバでおこなったけど
別に一緒のサーバでやる必要はないです。
使えるリソースが無かっただけです。。。。
■参考サイト
Selenium2.0 WebDriverで複数ブラウザのUIテスト もう一度、Selenium再入門
PHPUnit Manual 第17章 PHPUnit と Selenium
Selenium 2.0 と WebDriver
Selenium2.0ってどんなもの?とりあえず動かしてみよう!
Selenium + PHPUnitで簡単エンドツーエンドテストを実現する
Seleniumを使ったWeb UI自動テストシステムの構築でやったことまとめ
Selenium2のInternetExplorerDriverでエラーになった