Selenium と使うと便利なユーティリティ

またSeleniumの話ですが、前のエントリでも書いたとおり、TDDで使う分にはソース側を変えれば良いので特に問題にはならないのですが、既存のWebアプリに対してリグレッションテストを作成しようとすると今のバージョンでは、結構致命的になりかねない制限があります。

リファレンスに次のように書いてあります。

In some cases, Selenium will be unable to intercept a call to window.open (if the call occurs during or before the “onLoad” event, for example).

今私がテストを作成しているアプリケーションも結構古いもので、ページの切り替え時にJavascriptのAlertでポップアップウィンドウを出しているようなのですが、これのOKボタンを押すことが今のSeleniumだとどう転んでも出来ないのです。

でも、そこで手動操作を交えないといけないとなるとかなり魅力半減になってしまうのも事実で、少しの変更でバグが沢山出てしまうようなつくりの悪くなってしまったソースをリグレッションテストを通すために修正するというのも本末転倒のような話になってしまいかねません。

解決方法としては、Selenium RCを使用して.netプログラムにテストを変換して(テストの部分の変換はIDEがほぼ自動的にやってくれます)、Seleniumだけではどうしても手が出ない部分は、C#の力技で無理やり操作してしまうというのが一つの方法ですが、これだと開発者でない人にも何とかテストが作成できるというストーリーから離れていってしまうなあと考えあぐね、何か他の操作自動化するツールと組み合わせてできないかなと思って見つけたのがこれです。

UWSC

これもブラウザ操作等ができるのですが、その辺はSeleniumの方がずっと出来がよいと思いますが、SeleniumがJavascriptベースのために対応できない部分を補完するのには、結構最適な感じ(通常のWindowsプログラムなのでJavascriptの部分でかち合うことはない)です。私の場合、何とかこのユーティリティを組み合わせることで、Seleniumで閉じれなかったポップアップを閉じれるようになり、ほぼテストを自動化することに成功しました。このツールはオープンソースではありませんが、無償で提供してくださっているので大変ありがたいです。WindowsのAPIやCOM呼び出しもできるので頑張ればかなり強力なツールだと思います。ちょっと困った問題が、UIが全部日本語なんですよね。こちらの人にこれを使えとはちょっと言えないので、何か同等のツールを探さないといけないかも知れません。WinBatchなんかも使えるのかも知れませんが有料ですし、何かいいツールをご存知の方はぜひ教えてください。

とりあえず、Seleniumでのテスト自動化をしようとして、JavascriptのアラートウィンドウをSeleniumで閉じれなくて使用を断念しそうな方は、大いに試す価値があると思います。

This entry was posted in インターネット, コンピュータ, 技術 and tagged , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *