テストケースの作成(2/2)
テーブルの検証
次に、以下のような書籍情報を表示する画面の検証を考えてみましょう。指定した書籍IDに対して、正しいISBNやタイトルを表示しているか検証します。
画面のソースでは2カラム×16行のtableを用いて各項目を格納しています。このtableに対する検証で使用するコマンドは次のとおりです。
- tableの内容を確認 ……
assertTableコマンド
assertTableコマンドを使用するためには、検証する対象のtableを特定する必要があります。場合によってはxpathやdomを使用して特定することも可能ですが、tableが複数あるページなどでは特定方法が困難だったり不可能だったりします。従って画面のソースコード(JSPやhtml)においてtable要素にid属性をあらかじめ付与しておくことを推奨します。
コマンドの書式は次のとおりです。assert~はverify~と記述することもできます。
| コマンド | ターゲット | バリュー |
assertTableverifyTable | 検証対象のテーブル.行.カラム | 検証する文字列 |
ターゲットは、検証対象テーブル名と、対象セルの行およびカラムを「.」区切りで指定します。行およびカラムは0から数えます。上記の画面例で言うと、テーブル名(id属性)がtable_detailとなっていた場合、「タイトル:」のセルを指定する方法は「table_detail.2.0」となります。
画面ソース(JSP)の抜粋を示します。
……(中略)…… <table id="book_detail" class="book_detail"> <tr> <td class="menu_book_detail"> 書籍ID: </td> <td class="content_book_detail"> <bean:write name="DispBookForm" property="book.id"/> </td> </tr> <tr> <td class="menu_book_detail"> ISBN: </td> <td class="content_book_detail"> <bean:write name="DispBookForm" property="book.bookInfo.isbn"/> </td> </tr> ……(中略)……
3行目。id属性id="book_detail"で、テーブル名を付与しています。
9行目、17行目。Strutsのbean:writeタグでDispBookFormという名前のActionFormに格納された内容を出力しています。
ISBNとタイトルの検証を行うテストケースの記述は次のようになります。
……(中略)……
<tr>
<td>assertTitle</td>
<td>MyApp -書籍情報-</td>
<td></td>
</tr>
<tr>
<td>assertTable</td>
<td>book_detail.1.0</td>
<td>ISBN:</td>
</tr>
<tr>
<td>assertTable</td>
<td>book_detail.1.1</td>
<td>4774123412</td>
</tr>
<tr>
<td>assertTable</td>
<td>book_detail.2.0</td>
<td>タイトル:</td>
</tr>
<tr>
<td>assertTable</td>
<td>book_detail.2.1</td>
<td>Java J2EE オープンソース Spring入門</td>
</tr>
……(中略)……
10行目。tableの対象セルの行およびカラムを0開始で指定しています。テーブルの2行目1カラム目なのでbook_detail.1.0と記述します。
続いて11行目のISBN:は、対象セルに表示される内容です。
15行目、20行目、25行目も同様に検証を行う対象のセルを指定しています。
上記の例ではid属性でテーブルの指定をしていますが、参考として、xpathでテーブルを指定した場合の画面ソースとテストケースを示します。
<table border="1"> <tr> <td>A1</td> <td>B1</td> <td>C1</td> </tr> <tr> <td>A2</td> <td>B2</td> <td>C2</td> </tr> </table>
<tr> <td>assertTable</td> <td>xpath=//table.0.1</td> <td>B1</td> </tr>
3行目のxpath=//table.0.1でxpathでtableを指定しています。
コンボボックスの指定
今度はコンボボックスの指定方法です。

JSPのコードはStrutのhtml:selectタグを使用して次のようなっています。
:
<!-- 年月日のリストを取得 -->
<% request.setAttribute("yearList"
,myapp.viewhelper.createYearList()); %>
<html:select property="year" size="1">
<html:options name="yearList" labelName="yearList" />
</html:select>
年
このJSPで出力される画面のHTMLソースは次のようになります。
<select name="year" size="1"> <option value="2006">2006</option> <option value="2007">2007</option> </select> 年
コンボボックスなど、HTMLのselect要素を指定するには以下のコマンドを使用します。
- コンボボックスの値を指定 ……
selectコマンド
コマンドの書式は次のとおりです。
| コマンド | ターゲット | バリュー |
select | 選択するコンボボックスのelementLocator | OptionLocator |
OptionLocatorは、select要素のオプションを指定する方法です。表示されている文字列で指定する場合、「label=文字列」で指定します。テストケースは次のようになります。
……(中略)……
<tr>
<td>select</td>
<td>year</td>
<td>label=2006</td>
</tr>
……(中略)……
4行目。html:selectタグのproperty(name属性)であるyearを指定します。
続いて5行目。「label=文字列」の形式でlabel=2006と記述し、画面に表示されているラベル(文字列)を指定します。
また、select要素がmultiple属性を持っており、複数のoptionを選択できる場合、addSelectionコマンド、removeSelectionコマンドで選択肢の追加/削除を行うことができます。addSelectionコマンド、removeSelectionコマンドは、Seleniumのバージョン0.7.0で追加されたコマンドです。
| コマンド | ターゲット | バリュー |
addSelection | 選択状態にするselect要素のElementLocator | OptionLocator |
removeSelection | 非選択状態にするselect要素のElementLocator | OptionLocator |
ラジオボタンの指定
最後にラジオボタンの指定の仕方についてみてみましょう。次のようなラジオボタンがあったとします。

ソースコードは次のようになっています。
<html:radio property="book.lostFlg" value="1" />行方不明 <html:radio property="book.lostFlg" value="0" />所在把握
<input type="radio" name="book.lostFlg" value="1" >行方不明 <input type="radio" name="book.lostFlg" value="0" >所在把握
Seleniumでラジオボタンやチェックボックスを選択するにはcheckコマンドを使用します。非選択状態にするにはuncheckコマンドを使用します。checkコマンド、uncheckコマンドはSeleniumのバージョン0.7.0で追加されたコマンドです。
| コマンド | ターゲット | バリュー |
check | 選択したいボタンのElementLocator | なし |
uncheck | 非選択にしたいボタンのElementLocator | なし |
ターゲットのElementLocatorには、ラジオボタンのname属性とvalue属性を組み合わせることで特定が可能となります。「name=」Locatorを使用する場合はElement Filterでvalueを指定して次のように記述します。
name=book.lostFlg value=1
ElementLocatorとしてxpathを使用する場合は次のような記述になります。
xpath=//input[@name='book.lendability' and @value='1']
上記のJSPで[行方不明]ボタンをクリックしたい場合のテストケース記述は次のようになります。
<tr> <td>check</td> <td>name=book.lostFlg value=1</td> <td></td> </tr>
3行目で、クリックしたいボタン(行方不明)のnameとvalueを指定しています。

