株式会社フィードフォース技術チームのサイト。社内勉強会資料や開発の様子および成果の公開など。

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テストを実行するウェブブラウザ
  1. JRE1.5.0以上の環境を用意
    1. 今回の環境では1.5.0_10-b03を利用しました
  2. Selenium Remote Control: Downloadsから最新版をダウンロード
    1. 2007/02/02現在、v0.9.0
  3. ダウンロードした圧縮ファイルを適当な場所に展開(DOSプロンプトから実行しやすい位置がおすすめです)
    1. 今回はC:\selenium-remote-control-0.9.0に展開しました

PHPUnit3.0

今回は、PHPUnitから実行するために、以下の環境も用意します。PHPUnitは、Selenium Serverとは別のマシンで実行することにします(同一マシンで実行することも出来ます)。

  • PHP5.1以上
  • PHPUnit3.x
  • PEAR::Testing_Selenium-beta
  1. PHP5.1.0以上の環境を用意
  2. Testing_Selenium(beta)をインストール
    1. 2007/02/02現在、v0.3.0
  3. PHPUnit3をインストール
    1. 2007/02/02現在、v3.0.3
    2. 参考第3章 PHPUnit のインストール
    3. 過去の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のポートやタイムアウトを設定するオプションなどがあります。ほかにも、実運用の際に役立ちそうなオプションがあるので、試してみてはいかがでしょうか。

また、いくつか既知の問題もあるようですので、問題にぶつかった際は以下のページなどを参考にしてください。

No comments yet.

(required)

(required)


Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

powered by WordPress
copyright(c) 2006-2010 feedforce