PHPでSelenium2(WebDriver API)を使うための構成


PHPでSelenium2(WebDriver API)を使うための構成 | Bamboo lath 日々の記録

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でエラーになった

コメントを残す

メールアドレスが公開されることはありません。