SeleniumIDEとSelBlocksプラグインとforXMLコマンドを使うと
XMLで書いた項目に対して簡単にデータドリブンテスト(DDT)が出来るようになります。
インストールするもの
Firefoxに以下のプラグインをインストールしてください。
- Selenium IDE
- SelBlocksプラグイン
XMLファイルの作成
入力したいデータパターンをxmlファイルに作成する
<testdata>
<vars no= "1111111111111110" year = "18" month = "12" />
<vars no= "1111111111111111" year = "18" month = "12" />
<vars no= "1111111111111112" year = "18" month = "12" />
</testdata>
TestCaseの作成
forXmlコマンドを使って作成
<!--XMLの要素を1つずつ取ってくる-->
<tr>
<td>forXml</td>
<td>file:///C:/selenium/_testcase/card.xml</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>https://XXX </td>
<td></td>
</tr>
<!--カード情報入力-->
<tr>
<td>type</td>
<td>name=data[order][card_no]</td>
<td>${no}</td>
</tr>
<tr>
<td>type</td>
<td>name=data[order][card_month]</td>
<td>${month}</td>
</tr>
<tr>
<td>type</td>
<td>name=data[order][card_year]</td>
<td>${year}</td>
</tr>
<tr>
<td>endForXml</td>
<td></td>
<td></td>
</tr>
利点
- データ数=XMLの要素数なので、TestCase側はループ数を考慮しなくてよくなった
- TestCaseとXMLと分けることができたので、可読性があがった
- forXMLコマンドで${}で変数として取得できるようになったので可読性があがった
###以前は・・・
これを知るまで、かなり原始的な方法を行なっていました。
- JavaScriptの配列に詰め込む
- JavaScriptの配列の配列を使って無理やり要素を詰め込む
<tr>
<td>getEval</td>
<td>objCardno = [
{"no":"111111111110","year":"18","month":"12"},{"no":"111111111111","year":"18","month":"12"},{"no":"111111111112","year":"18","month":"12"}];</td>
<td></td>
</tr>
この方法だと、JavaScriptエラーに高確率で引っ掛かり、デバッグもしづらかったのです。
今回の方法では、XMLに記述できるので、可読性もあがるのでステキになりました。
(JSファイルだけ外出しにする方法もあるのですが、あんまり根本的な解決としてはクールじゃない)
###再利用性があがる
- 入力パターンだけをXMLで外に出せたので、そのXMLだけ他のTestCaseに使いまわしが可能になった
- TestCaseの内容を変更せずに、XMLファイルパスだけを変更することで、別の入力パターンも簡単にできるようになる
##最後に
今回の疑問は、https://seleniumjp.slack.com で質問したところSelBlocksが使えるんじゃない?と教えていただきました。
ありがとうございました:)