ダウンロード、インストールと使用準備
ダウンロード
それでは、実際にSeleniumをダウンロードして、インストールをしてみましょう。以下の手順でSeleniumをダウンロードします。
- ブラウザでSeleniumのダウンロードページにアクセスします。
- zipファイルを任意のフォルダに保存・解凍します。
- zipファイルを解凍すると、「selenium-core-x.x.x」フォルダが展開されます(x.x.xはSelenium Coreのバージョン)。
- フォルダ名を「selenium-core-x.x.x」から「selenium-core」に変更します(*2)。
- 今回は、以下の理由からSeleniumのテスト用プロジェクト(Webアプリケーション)を新規作成し、そこにテストケースを作っていくことにします。
- テスト対象のWebアプリケーションとテストケースを分離して管理できる。
- Seleniumでのテストにおける独自処理(初期化処理など)を実装できる。
ただし、アプリケーション(.warファイル)を生成する際に、次のような対応が必要となってしまいます。
- テストケースやSelenium関連ファイルを含めないようにする設定が必要。
- Seleniumでのテスト用処理サーブレットなどを作成した場合、本番用の「web.xml」を別途用意して切り替えることが必要。
Selenium用プロジェクトの作成
Seleniumのテスト用プロジェクトを以下手順で作成します。
- eclipseで新規のTomcatプロジェクトを作成します。
- このSeleniumTestプロジェクトの直下(WEB-INFフォルダと同列)に、3.1でzipファイルを解凍してリネームした「selenium-core」フォルダをコピーします。

動作確認
では、作成したSeleniumTestでSeleniumが動作するか確認してみましょう。
- Tomcatを起動します。
- ブラウザでTomcatManagerにアクセスします。
- ブラウザのアドレスバーに以下のURLを入力しアクセスします。
- すると、SeleniumのIndex画面が表示されます。
- ここでは[Acceptance tests]の[Selenium TestSuite]をクリックします。すると、デモの時と同じようなTestRunnerの画面が表示されます。
- このTestRunner画面で、いくつかテストを実行してみてください。
拡張設定
動作確認ができたら、より便利に使うために以下の設定を行います。
user-extensions.js
Seleniumでは、独自のコマンドやElementLocatorを作成して使用することができます。そのために「user-extensions.js」というカスタマイズ用のファイルがあり、ここに追記することでSeleniumの元ソースに手を加えることなく拡張設定が可能です。
「user-extensions.js」はデフォルトでは存在しない(「user-extensions.js.sample」というファイルになっている)ため、「user-extensions.js」ファイルを作成する必要があります。以下の手順を実施します。
- SeleniumTestプロジェクトの「selenium-core/core/scripts/」フォルダ直下に「userextensions.js.sample」というファイルがあるので「user-extensions.js」にリネームします。
ボタンを表示された名前で指定する拡張設定
Seleniumのデフォルト設定では、ボタンを押す(clickコマンドを使用する)ためにはxpathで属性を組み合わせて指定しなければならず、面倒です。そのため、表示されたボタン名で指定することができるように拡張します。この拡張で「button=ボタン名」という指定方法ができるようになります。以下の手順を実施します。
- 「user-extensions.js」を開き、ファイルの末尾に以下のメソッドを追記します。
- 動作確認の手順で、拡張した状態でSeleniumが動作することを確認してください。
// ボタン名で指定できるElementLocator PageBot.prototype.locateElementByButton = function(identifier,inDocument) { var elements = inDocument.getElementsByTagName("input"); if (elements) { for (var i = 0; i < elements.length; i++) { var element = elements[i]; var attr = element.getAttribute("type"); if ((attr == "submit") || (attr == "button") ||
(attr == "reset")) { if (element.getAttribute("value") == identifier) { return element; } } } } return null; };
既知のバグ対応
ここでは、まだリリースされていないものの開発コミュニティで既に対処されているバグについての対応を反映させていきます。正式リリースまでの暫定対処になります。
タブ文字に対する取り扱い不備
具体的には、Firefoxでタブを含む文字列に対して文字列検証コマンドがエラーとなります。この問題はバージョン0.7.1でリリース予定です(BTSの番号:SEL-234)。対処方法は次のとおりです。
- SeleniumTestプロジェクトの「selenium-core/core/scripts/」配下にある「htmlutils.js」の65行目を次のように修正します。
function renderWhitespaceInTextContent(element) { // Remove non-visible newlines in text nodes if (element.nodeType == Node.TEXT_NODE) { (修正前) element.data = element.data.replace(/\n|\r/g, " "); (修正後) element.data = element.data.replace(/\n|\r|\t/g, " "); return; }
おわりに
Webアプリケーション用のテストツールSeleniumについて解説してきました。Seleniumを使用することで、ブラウザ操作を自動化して、Webアプリケーションの試験・検証を効率的に行うことができます。今回はSeleniumの概要として、提供する機能や、メリットや使用する際の注意点ほか、Seleniumのダウンロード、インストール手順について解説しました。
次回は、いよいよテストケースについての解説です。テストケースを実際に記述し、Seleniumでテストを実行してみます。お楽しみに。



inDocument) {