LoginSignup
9
13

More than 5 years have passed since last update.

SeleniumIDE×SelBlocksを使ってXMLでDDT!

Last updated at Posted at 2016-01-18

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 = [
{&quot;no&quot;:&quot;111111111110&quot;,&quot;year&quot;:&quot;18&quot;,&quot;month&quot;:&quot;12&quot;},{&quot;no&quot;:&quot;111111111111&quot;,&quot;year&quot;:&quot;18&quot;,&quot;month&quot;:&quot;12&quot;},{&quot;no&quot;:&quot;111111111112&quot;,&quot;year&quot;:&quot;18&quot;,&quot;month&quot;:&quot;12&quot;}];</td>
<td></td>
</tr>

この方法だと、JavaScriptエラーに高確率で引っ掛かり、デバッグもしづらかったのです。
今回の方法では、XMLに記述できるので、可読性もあがるのでステキになりました。

(JSファイルだけ外出しにする方法もあるのですが、あんまり根本的な解決としてはクールじゃない)

再利用性があがる

  • 入力パターンだけをXMLで外に出せたので、そのXMLだけ他のTestCaseに使いまわしが可能になった
  • TestCaseの内容を変更せずに、XMLファイルパスだけを変更することで、別の入力パターンも簡単にできるようになる

最後に

今回の疑問は、https://seleniumjp.slack.com で質問したところSelBlocksが使えるんじゃない?と教えていただきました。
ありがとうございました:)

9
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
13