はじめまして。
プロダクト&サービス事業部の笹山です。
今回は、SeleniumRCを用いてWebアプリケーションのテスト中に、Flex部分のみを手動操作し、
その後再び自動テストを継続させる方法について書きたいと思います。
有名なツールなのでみなさんご存知と思いますが、まずSeleniumRCとは、
「Webブラウザの操作を自動化させ、Webアプリケーションの画面表示や画面遷移のテストを行うツール」で
Webアプリケーションのテストには欠かせないツールです。
今回弊社では、easyFiLEXのテストをSeleniumRCを用いて行うことになりました。
easyFiLEXテストでSeleniumRCを使用する際の問題
弊社Tech Blog(05/18)記事にもあるように、easyFiLEXではFlexを採用しています。
easyFiLEXには、Wizard形式の画面があり、その一部画面にFlexが採用されています。
しかし、SeleniumRCは一般的なWebアプリケーションのテストを行うツールで、Flexには対応していません。
そのため、Flexが採用されているWizard形式の1画面がクリアできず、次の画面のテストができないのです。
ここをどう解決するか非常に悩みました。
FlashSelenium発見と挫折
まずは、Google先生に聞いてみました。
すると以下のサイトが検索に引っ掛かりました。
FlashSeleniumというSeleniumRCとFlexを連携させるツールです。
「これで解決!(Flex部分のテストも自動化できる!)」と思いました。
意気揚揚と公開されているサンプルを動かしはじめましたが、サンプルすら動きませんでした。(動いた方は教えてください。)
解決方法の発見
途方に暮れselenium-client-driverのJavaDocを眺めていた時、ふと目に入った文字が・・・。
com.thoughtworks.selenium.Wait
便利なクラスがselenium-client-driverに用意されていました。
「条件がtrueになるまで、指定時間待つ」というものです。
easyFiLEXのテストでは以下の手順で使用しました。
手順内の画面は、
Flexが採用されているWizard形式の1画面で、「ファイルのアップロード後、送信先を指定する画面」です。 送信先を指定しない限り、次の画面へ進むことができないようになっています。
- Flexが採用されている画面までは、SeleniumRCを用いてWizard形式画面の自動テストを行います。
- Flexが採用されている画面に遷移後、SeleniumRCで送信先を指定せずに「次へ」ボタンを押下させ、バリデーションエラーを発生させます。
バリデーションエラー:「送信先が選択されていません。1つ以上選択してください。」 - バリデーションエラーが画面上に表示されている間は、指定時間待機させます。(以下コード参照)
- 待機中にFlex操作を手動で行い、バリデーションエラーが画面上から消えると、再び自動テストが始まります。
Selenium実行途中でWaitをかけるコード
1 2 3 4 5 6 7 8 9 | new Wait() { public boolean until() { if(!selenium.isTextPresent("送信先が選択されていません。1つ以上選択してください。")) { return true; } else { return false; } } }.wait("タイムアウト", 60000); |
最後に
Flex部分だけは手動操作になってしまいますが、それ以降はスムーズに自動テストできるので現時点ではこの方法でテストを行っています。
時間の都合上、FlashSeleniumについて深く調査はしていませんが、調査をして「このブログに公開できたら・・・」と思っています。






7月 23rd, 2009 at 10:34
[...] Seleniumの自動テストを止めることなく、Flexを手動操作する方法 (3) [...]
10月 21st, 2009 at 19:19
[...] Seleniumの自動テストを止めることなく、Flexを手動操作する方法 [...]