![]() |
連載:VBで実践! 外部コンポーネント活用術Webアプリケーション用テスト・ライブラリ「WatiN」を使うデジタルアドバンテージ 岸本 真二郎2009/04/17 |
|
|
WatiN(“what-in”と発音)は、Rubyで記述されたオープンソース・フレームワークである「Watir」をヒントにして作成されたという.NET用のライブラリで、Webアプリケーションをテストするためのものです。WatiNもまたオープンソースであり、WatiNのサイトから入手できます。
WatiNを利用すると、Webアプリケーションでユーザーが行う操作を、VBなどで記述したアプリケーションから疑似的に行うことができ、Webアプリケーションの動作テストの自動化が実現できます。今回はこのWatiNを使ったWebアプリケーションのテストについて紹介します。
■WatiNのインストール
WatiNは、本稿執筆時点で、安定版であるバージョン「1.3.0」と、次バージョンとなる「2.0 beta1」が公開されています。1.3.0で対応するWebブラウザはIEのみですが、2.0 beta1では、IEに加えて、FireFox、Chromeが利用できます。本稿では2.0 beta1を使用します。
動作環境の制限は特に見当たりませんが、2.0 beta1については、Visual Studio 2005および2008で利用できることを確認しています(1.3.0は、.NET Framework 1.1用と、.NET Framework 2.0用の2種類のバイナリが用意されています)。本稿では、Windows XP上のVisual Studio 2008(以下、VS 2008)を使用しています。
インストールに関しては、2.0 beta1はZIPファイルで提供されており、これを適当なフォルダに展開するだけで利用できます(1.3.0はMSI形式のインストーラで配布されています)。今回は1.3.0のインストーラの動作に従って、「C:\Program Files\WatiN」にZIPファイルを展開しました。「bin」フォルダに含まれる「WatiN.Core.dll」がWatiNのメインとなるライブラリです。
|
IEの自動実行
まず、コンソール・アプリケーション・プロジェクトを作成して、IEを自動実行してみます。
■プロジェクトの作成と参照の追加
新規プロジェクトの作成で、[コンソール アプリケーション]を選択し、プロジェクトを新規作成したら、最初にWatiNの参照を追加します。これには、メニューから[プロジェクト]−[参照の追加]を選択し、[開く]ダイアログボックスの[参照]タブを選択します。そして先ほど展開したフォルダから、「WatiN.Core.dll」を選択して[OK]ボタンをクリックします。
■STAThread属性の指定
次に、自動生成されたソース・ファイルのMainメソッドにSTAThread属性(<STAThread()>)の記述を追加します。ドキュメントによると、WatiNがIEをCOM経由でコントロールする際に、スレッディング・モデルをSTA(single-thread apartment)にしておく必要があるためです。
スレッディング・モデルについてはここでは説明しませんが、コンソール・アプリケーションやWindowsフォーム・アプリケーションでWatiNを利用する場合は、STAThread属性の設定が必要になります。なお、後述のテスト・プロジェクトではSTAの指定は不要です(テストの実行自体がSTAで実行されるため)。
■既存のサイトにアクセスしてみる
IEをオープンしてURLを指定し、リンクをクリックするようなコードを記述してみます。
ここでは@ITのトップページから「Insider.NET」のリンクをクリックして、Insider.NETのトップページを表示します。さらにページのタイトルを取得してそれをコンソールに表示し、ページに含まれるすべてのリンク(<a>タグ)もコンソールに表示します。
| |
| Insider.NETにアクセスして、リンク先を表示する |
リストに示すように、最初にIEクラス(WatiN.Core名前空間)のオブジェクトを生成します。これにより、オブジェクトの生成と同時にIEが起動し、コンストラクタで指定したURLがアクセスされます。
次に、このページに含まれるInside.NETのページのリンク(<a>タグ)を(疑似的に)クリックします(ページの左側のメニュー部分)。特定のタグを取得するにはFindクラスを使用します。
Findクラスには、ページに含まれるタグを見つけるための多数の静的な検索メソッドが用意されています。例えばタグに付けられたid属性で検索したり(Find.ByIdメソッド)、name属性で検索したり(Finde.ByNameメソッド)といったことができます。
最後にCloseメソッドを呼び出しているので、ページのロードが完了すると、IEが自動的にクローズします。
■HTMLタグとWatiNのクラス
WatiNにはHTMLタグに対応した各種クラスが用意されており、おのおののHTMLタグに応じたアクションが実行できます。上記のコードでは、href属性に設定されているURLを手掛かりにLinkオブジェクトを見つけ出し、そのClickメソッドを実行しています。
また例えば、テキストボックス(<input>タグ)に文字列を入力したいなら、<input>タグに対応するTextFieldクラスのTypeTextメソッドを使うことで、テキストボックスに文字列を入力できます。
WatiNで用意されているHTMLタグに対応したクラスを次の表に示します。それぞれのクラスには、対応するコレクション・クラスが用意されており、上記のコードのようにIEオブジェクトからは、プロパティによりコレクション・オブジェクトを取得できます。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| HTMLタグとWatiNのクラス/コレクション・クラスの対応 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
これらのクラスでは、上述したように、LinkクラスやButtonクラスならClickメソッド、TextFieldクラスならTypeTextメソッド、という具合にそれぞれのコントロール操作に応じたメソッドが提供されています。これらを用いることで、ユーザーの操作をWatiNで再現できるわけです。
また上記のコンソール・アプリケーションでは、ページに含まれるリンクの一覧を画面に表示しましたが、これらのクラスを使ってページの内容を解析することも可能になります。
| INDEX | ||
| VBで実践! 外部コンポーネント活用術 | ||
| Webアプリケーション用テスト・ライブラリ「WatiN」を使う | ||
| 1.WatiNのインストール/IEの自動実行 | ||
| 2.VS 2008のテスト機能を使ってWebアプリをテスト | ||
| 3.ページの表示内容をファイルに保存/[コラム]WatiN Test Recorder | ||
| 「VBで実践! 外部コンポーネント活用術」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
は.NET開発者中心に生まれ変わりました
スポンサーからのお知らせ
.NET開発者中心コーナー
- - PR -
イベントカレンダー
- - PR -


