Selenium HTMLSuite Extension

Selenium Remote Control(以降Selenium RC)におけるHTMLSuite(HTML形式で記述したテストスイート)の実行を、より手軽に、より便利にするためのライブラリです。


Selenium HTMLSuite Extension を使った、Seleniumによる継続的なリグレッションテストを行うためのツールとして、Selenium Auto Exec Server(AES)も公開しています。


Selenium HTMLSuite Extension は、Selenium RCに対して、下記のような拡張機能を提供します。(あくまでHTMLSuiteの実行に関してのみの拡張です)

HTMLSuiteの複数ファイル指定

Selenium RCでは、実行するHTMLSuiteを1つしか指定できませんが、本ライブラリではHTMLSuiteが配置してあるディレクトリを指定することにより、そのディレクトリ内の特定のファイルパターン(ファイル名に"suite"または"Suite"が含まれる)に一致するHTMLSuiteをまとめて実行することが出来ます。

HTMLSuiteの自動生成

テストケースのHTMLが増えるたびに、HTMLSuiteファイルにリンクを追加するのは面倒です。

本ライブラリでは、HTMLSuiteファイルを事前に用意しなくても、実行時にHTMLSuiteファイルを自動生成し実行することが出来ます。(所定のディレクトリにテストケースのHTMLを入れておくだけでOK)

複数ブラウザの指定

Selenium RCでは、対象のブラウザを1つしか指定できませんが、本ライブラリでは複数のブラウザでの実行を一度に指定可能です。

実行結果ファイルの出力抑止

Selenium RCでは、HTMLSuiteを実行時に必ず結果ファイルの出力先を指定しなければなりませんが、本ライブラリを使うと"結果ファイルを出力しない"ように指定することも可能です。

HTMLSuiteの実行を相対パスで指定可能

Selenium RCではHTMLSuiteのパスを絶対パスで指定する必要がありましたが、本ライブラリでは実行ディレクトリからの相対パスでの指定でもOKです。

HTMLSuiteの実行内容をプロパティファイルで指定可能

本ライブラリでは、プロパティファイルにSelenium RCの起動からHTMLSuiteの実行に関する設定を記載し、実行することが出来ます。

JUnitからHTMLSuiteの実行

HTMLSuiteを実行するためのJUnit用テストクラスも用意してあります。

実行するHTMLSuiteの設定ファイル(プロパティファイル)を配置し、テストクラスを実行することによりHTMLSuiteが実行されます。

ダウンロード

selenium-ext-htmlsuite-0.3.zip ver 0.3 (2008/07/04)


Selenium RC(0.9.2)のselenium-server.jarも同梱しています。

サンプルとなるHTMLSuiteも入っておりますので、すぐにお試しいただけます。


開発中のソースコードは下記から参照できます。

selenium-extension - Google Code

ライセンス

Selenium RC と同様に、Apache License, Version 2.0とします。

使用方法

コマンドラインからの実行

ダウンロードしたZipファイルを解凍し、htmlSuite.propertiesにSelenium RCおよびHTMLSuiteの実行に関する設定を記載します。

htmlSuite.propertiesのサンプルは下記の通りです。

browser=*firefox,*iexplore
startURL=http://search.yahoo.com/
generateSuite=true
suite=suite
result=result

port=4444
timeout=1800
#multiWindow=true
#userExtensions=user-extensions.js
#proxyHost=localhost
#proxyPort=8888
#avoidProxy=true
#debug=true
#log=selenium.log

各設定項目の説明は、下記の通りです。(Selenium RCでHTMLSuiteを実行する際のオプションとほぼ一緒です)

項目 必須
/任意
内容
browser 必須 HTMLSuiteの実行ブラウザを指定します。カンマ区切りで複数指定可能です。
startURL 必須 テスト対象のドメインを指定します。
generateSuite 任意 HTMLSuiteの自動生成を行う場合に"true"を指定します。
suiteで指定したディレクトリ内の"Case"または"case"がつくファイルをテストケースのHTMLと判断し、HTMLSuiteファイルを作成します。
詳しくは、suiteの欄をご参照ください。
suite 必須 HTMLSuiteのパスを指定します(相対パスでもOK)。指定したパス(ディレクトリまたはファイル)とgenerateSuiteの組み合わせによって、実行されるHTMLSuiteが変わってきます。
[ディレクトリ名指定、generateSuite=true の場合]
指定ディレクトリ内からテストケースのHTMLを検索し、同ディレクトリに"generatedTestSuite.html"というファイルでHTMLSuiteを作成し実行します。
[ファイル名指定、generateSuite=true の場合]
指定されたファイル名でHTMLSuiteを自動生成します。
テストケースの検索対象は、指定したHTMLSuiteと同じディレクトリ内が対象になります。
[ディレクトリ名指定、generateSuite=false(または指定なし) の場合]
そのディレクトリ内からHTMLSuiteを検索(ファイル名に"Suite"または"suite"が含まれる)し、実行します。
[ファイル名指定、generateSuite=false(または指定なし) の場合]
指定されたファイルをHTMLSuiteとして実行します。
result 任意 HTMLSuiteのテスト結果を出力するディレクトリを指定します。
テスト結果のファイルは、指定ディレクトリ配下に "(ブラウザ名)/(HTMLSuite名)_result.html" として出力されます。
指定しない場合は、テスト結果はどこにも出力されません。
port 任意 Selenium サーバを起動するポート番号を指定します。
デフォルトは4444です。
timeout 任意 HTMLSuite実行時のタイムアウト時間(秒)を指定します。
デフォルトは3600秒です。
multiWindow 任意 "true"を指定するとテストを別ウインドウで実行します。
debug 任意 "true"を詳細なログ(デバッグログ)を出力します。
log 任意 ログをファイルに出力したい場合、ファイル名を指定します。
userExtensions 任意 JavaScriptで記述されたSeleniumのユーザ拡張ファイルを使用する場合に指定します。
proxyHost 任意 利用するプロキシのホストを指定します。
Selenium RCのバージョン0.9.2ではバグがあるので、プロキシを利用する際には、avoidProxy=true も一緒に指定してください。
Selenium RC (0.9.2) でプロキシ指定が動かない - Enjoy*Study
proxyPort 任意 利用するプロキシのポート番号を指定します。
avoidProxy 任意 "true"を指定すると、/selenium-server 以外のリクエストは、Seleniumサーバで受けないようになります。
firefoxProfileTemplate 任意 Firefoxで利用するプロファイルディレクトリを指定します。

解凍してできたjarを実行します。(Selenium RCの実行には、Javaの実行環境(JRE1.5以上)が必要となります)
※start.batに同様の内容が書いてありますので、それを実行すればOKです。

java -jar selenium-ext-htmlsuite-0.3.jar

デフォルトでは、実行ディレクトリのhtmlSuite.propertiesを設定ファイルとして読み込みますが、他のファイルを使用したい場合には、引数として設定ファイル名(相対、絶対どちらもOK)を指定してください。

Seleniumサーバが起動し、HTMLSuiteが実行されます。HTMLSuiteの実行が終了すると、Seleniumサーバも停止します。

JUnitのテストクラスとして実行

コマンドラインではなくJUnitのテストクラスとしても実行できます。

その場合には、設定ファイル(コマンドラインからの実行時と同じ内容)をクラスパスに配置し、com.enjoyxstudy.selenium.htmlsuite.HTMLSuiteTest を実行します。

設定ファイルは、下記のような順序で検索されます。

  1. 実行クラスと同じパッケージの(実行テストクラス).properties
  2. ルートパッケージのhtmlSuite.properties

com.enjoyxstudy.selenium.htmlsuite.HTMLSuiteTestをそのまま実行するならば、com.enjoyxstudy.selenium.htmlsuiteパッケージのHTMLSuiteTest.propertiesが最優先の設定ファイルとなります。

なお、HTMLSuiteTestを継承して別クラス(中身の処理は定義なし)を作れば、設定ファイルを毎に複数のテストクラスとして実行することも可能です。

複数のテストクラスを作る必要がなければ、ルートパッケージにhtmlSuite.propertiesを置いて実行するのが一番手軽だと思います。

AntやMavenのタスク、プラグインとしてHTMLSuiteを実行するものがありますので、そちらを使っても良いと思いますが、、本ライブラリを使えば、HTMLSuiteの指定がより楽になるのではと思います。

変更履歴

ver 0.3 (2008/07/04)

  • firefoxProfileTemplateオプション対応。

ver 0.2 (2008/05/24)

  • リファクタリング。
  • Selenium Auto Exec Server向けの修正。

ver 0.1 (2007/11/17)

  • 初回公開。

その他

お問い合わせ、コメント等は下記Blogの方でお願いします。