{ 2012.6.16 }

Selenium IDEで連番をjavascriptでつける

    はてなブックマーク - Selenium IDEで連番をjavascriptでつける
    このエントリーをはてなブックマークに追加

    こんにちは。フクダリナです。
    連投になりますが、今回は以前からずっとやりたくてもいまいちやり方を分かっていなかったSeleniumでの連番での登録方法です。

    Selenium IDEで連番をふるには

    Selenium IDEだけで連番を振ろうと思うと、手でせこせこ番号を入れる方法しか思いつきませんでした。
    どうにかして動的に番号を振れるはずだとは思っていましたが、録音でできるものではなく。
    Javascriptを使って登録します。

    今回使うコマンドはコチラ
    『getEval』

    前回のinnerHTMLを操作するときと同じコマンドですね。

    getEvalでJavascriptの操作が可能になります。

    <tr>
    	<td>getEval</td>
    	<td>i=1;</td>
    	<td></td>
    </tr>

    これで変数iに1をセットすることになります。いたってシンプル。

    変数の保持期間ですが、Seleniumオブジェクトに保持されるようです。
    ですので、test caseをまたごして使用することも可能ですし、初期値セットを通さなければ1回目のテストの続きの番号を2回目のテストで使用することが可能になります。

    連番を振りながら登録してみる

    実践してみます。
    いつもはページネーションのデータ作るときに使っているのですが、公開できる画面がありませんので、前々回書いたSelenium IDEでスクリーンショットをとりながらテストするを改良して、連番のファイル名でスクリーンショットを保存します。

    改良点は以下
    ・storeしていたファイルパスをjavascriptの変数に変更

    <tr>
    	<td>getEval</td>
    	<td>file_path="C:\\test\\";</td>
    	<td></td>
    </tr>

    ・固定値だったファイル名をjavascriptでインクリメントした変数を2桁ゼロパディングした名称に変更

    <tr>
    	<td>captureEntirePageScreenshot</td>
    	<td>javascript{file_path+ ( "0"+i).slice(-2) + ".jpg";}</td>
    	<td>background=#FFFFFF</td>
    </tr>

    スクリーンショットを以下の3回撮るようにします。
    1.ZENPREのTOPページを開いたとき
    2.ログイン画面ページを開いたとき
    3.エラー画面表示時

    完成したものがコチラ。

    <table border="1" cellspacing="1" cellpadding="1">
    <thead>
    <tr>
    <td colspan="3">New Test</td>
    </tr>
    </thead>
    <tbody>
    <!--==ZENPRE使ってテスト==-->
    <!-- 変数セット-->
    <tr>
    	<td>getEval</td>
    	<td>i=1;</td>
    	<td></td>
    </tr>
    <!-- 画像保存パスをJavascript側で指定-->
    <tr>
    	<td>getEval</td>
    	<td>file_path="C:\\test\\";</td>
    	<td></td>
    </tr>
    <!-- Zenpreのページを開きます-->
    <tr>
    	<td>open</td>
    	<td>http://zenpre.net/</td>
    	<td></td>
    </tr>
    <!--1回目:スクリーンショットを撮ります-->
    <tr>
    	<td>captureEntirePageScreenshot</td>
    	<td>javascript{file_path+ ( "0"+i).slice(-4) + ".jpg";}</td>
    	<td>background=#FFFFFF</td>
    </tr>
    <!--インクリメント-->
    <tr>
    	<td>getEval</td>
    	<td>i=i+1;</td>
    	<td></td>
    </tr>
    <!-- ログインをクリック-->
    <tr>
    	<td>clickAndWait</td>
    	<td>css=#no_logined_header > a > img.fright</td>
    	<td></td>
    </tr>
    <!--2回目:スクリーンショットを撮ります-->
    <tr>
    	<td>captureEntirePageScreenshot</td>
    	<td>javascript{file_path+ ( "0"+i).slice(-4) + ".jpg";}</td>
    	<td>background=#FFFFFF</td>
    </tr>
    <!--インクリメント-->
    <tr>
    	<td>getEval</td>
    	<td>i=i+1;</td>
    	<td></td>
    </tr>
    <!-- test/testでログイン-->
    <tr>
    	<td>type</td>
    	<td>login</td>
    	<td>test</td>
    </tr>
    <tr>
    	<td>type</td>
    	<td>password</td>
    	<td>test</td>
    </tr>
    <tr>
    	<td>clickAndWait</td>
    	<td>//input[@type=&#039;image&#039;]</td>
    	<td></td>
    </tr>
    <!-- エラーメッセージが正しく表示されているか確認-->
    <tr>
    	<td>verifyTextPresent</td>
    	<td>ログインID、または、パスワードが違います</td>
    	<td></td>
    </tr>
    <!--3回目:スクリーンショットを撮ります-->
    <tr>
    	<td>captureEntirePageScreenshot</td>
    	<td>javascript{file_path+ ( "0"+i).slice(-4) + ".jpg";}</td>
    	<td>background=#FFFFFF</td>
    </tr>
    </tbody>
    </table>

    実行すると、C:\testに3つの画像ファイルが保存されます。

    連番がふれるというだけで、だいぶテストケースを作る手間がかからなくなりますので、ぜひご活用ください。

    Comments are closed.