Selenium RCの紹介
Selenium RCとは
Selenium RCは、OpenQAによって提供されているSelenium製品ファミリの1つです。
2007/02/02現在、Apache License, Version 2.0の下に配布されています。
Selenium RCは、Selenium Remote Controlという名が表すとおり、Seleniumテストを遠隔操作するための製品です。
これは、JAVAのJetty Web Serverを利用したSelenium Serverを利用して実現されています。
/---------------------\ /------------------------\ | | | | | /-----------------\ | HTTP | /--------------------\ | | | Selenium Server |-+------+-| Selenium RC Driver | | | \-----------------/ | | \--------------------/ | | | | | | | | | | /-----------------\ | | /--------------------\ | | | Web Browser | | | | Program | | | \-----------------/ | | \--------------------/ | | | | | \---------------------/ \------------------------/
準備
Selenium RC
Selenium RCの実行には、以下の環境が必要です(今回は、Windodwsマシン上で実行します)。
- JRE(Java Runtime Environment) version 1.5.0以上
- Seleniumテストを実行するウェブブラウザ
- JRE1.5.0以上の環境を用意
- 今回の環境では1.5.0_10-b03を利用しました
- Selenium Remote Control: Downloadsから最新版をダウンロード
- 2007/02/02現在、v0.9.0
- ダウンロードした圧縮ファイルを適当な場所に展開(DOSプロンプトから実行しやすい位置がおすすめです)
- 今回はC:\selenium-remote-control-0.9.0に展開しました
PHPUnit3.0
今回は、PHPUnitから実行するために、以下の環境も用意します。PHPUnitは、Selenium Serverとは別のマシンで実行することにします(同一マシンで実行することも出来ます)。
- PHP5.1以上
- PHPUnit3.x
- PEAR::Testing_Selenium-beta
- PHP5.1.0以上の環境を用意
- Testing_Selenium(beta)をインストール
- 2007/02/02現在、v0.3.0
- PHPUnit3をインストール
- 2007/02/02現在、v3.0.3
- 参考第3章 PHPUnit のインストール
- 過去のPHPUnit(v1,v2)をアンインストールするする必要があります
$ pear install -a Testing_Selenium-beta $ pear channel-discover pear.phpunit.de $ pear install -a phpunit/PHPUnit
インタラクティブモードで実行
Selenium Serverは、デーモン起動のほかにインタラクティブモードでの起動が可能です。まず、動作を見るためにインタラクティブモードで実行してみます。
server\selenium-server.jarが、Selenium Serverです。これを、java -jarで実行します。
- (DOS)はDOSプロンプト
- (SRC)はSelenium Serverの入力待ち
- 何も無ければメッセージ表示
インタラクティブモードで起動し、以下の手順を実行します。
- ブラウザと起点URLを指定してセッションを準備
- 指定したブラウザが起動して、以降のコマンド実行に必要なセッションIDを取得します
- Googleを開く
- 検索キーワードを入力(SeleniumRC)
- titleタグの内容を取得する
- テストを終了してブラウザを閉じる
- Selenium Server終了
(DOS)C:~> java -jar C:selenium-remote-control-0.9.0server/selenium-server.jar -interactive ... 起動メッセージ... (SRC)cmd=getNewBrowserSession&1=*iexplore&2=http://www.google.com ... 実行メッセージ ... Got result: OK,221234 on session 221234 (SRC)cmd=open&1=http://www.google.com/webhp&sessionId=221234 ... 実行メッセージ ... (SRC)cmd=type&1=q&2=SeleniumRC&sessionId=221234 ... 実行メッセージ ... (SRC)cmd=click&1=btnG&sessionId=221234 ... 実行メッセージ ... (SRC)cmd=getTitle&sessionId=221234 ... 実行メッセージ ... Got result: OK,SeleniumRC - Google 検索 on session 221234 (SRC)cmd=testComplete&sessionId=221234 ... 実行メッセージ ... (SRC)^C Shutting down... (DOS)C:~>
PHPUnitから実行
Testing_SeleniumというPEARパッケージを利用することで、PHPUnitからSeleniumテストをリモートマシン上で実行することが可能です。
インタラクティブモードで実行した内容をPHPUnitのテストケースにして実行します。
Selenium Serverをデーモンとして実行
テスト実行の前に、Selenium Serverをデーモンとして起動しておきます。
(HOST[A]/DOS)C:~> java -jar C:selenium-remote-control-0.9.0server/selenium-server.jar
サンプルコード
- SeleniumRCTest.php(UTF-8)
<?php
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
class SeleniumRCTest extends PHPUnit_Extensions_SeleniumTestCase
{
protected function setUp()
{
$this->setHost('192.168.1.77'); // HOST[A]のIP
$this->setBrowser('*iexplore');
$this->setBrowserUrl('http://www.google.com/');
}
public function testTitle()
{
$this->open('/webhp');
$this->type('q', 'SeleniumRC');
$this->click('btnG');
$this->waitForPageToLoad(30000);
$this->assertTitleEquals('SeleniumRC - Google 検索');
}
}
?>
実行
(HOST[B]/DOS)C:~> phpunit pathtoSeleniumRCTest.php PHPUnit 3.0.3 by Sebastian Bergmann. . Time: 00:12 OK (1 test)
HOST[B]上のDOSプロンプトからphpunitコマンドでテストケースファイルを実行すると、HOST[A]上で起動させたSelenium Serverにリクエストを行い、HOST[A]上でブラウザを立ち上げSeleniumテストが実行されます。
さいごに
今回の資料の中では、Selenium Serverの起動オプションについては省略しています。
以下のように、-helpオプションをつけて実行することでヘルプが表示されます。
(DOS)C:~>java -jar c:selenium-remote-control-0.9.0serverselenium-server.jar -help
HTMLで記述したテストスイートを利用するオプションや、マルチウィンドウモードでテストを実行するオプション、Selenium Serverのポートやタイムアウトを設定するオプションなどがあります。ほかにも、実運用の際に役立ちそうなオプションがあるので、試してみてはいかがでしょうか。
また、いくつか既知の問題もあるようですので、問題にぶつかった際は以下のページなどを参考にしてください。




RSSフィード