watij
webア プリケーションに selenium を採用してからかなりの時間が経つが、やはりしっくりこない点が多く、IE では使いにくい。他に良いテスティン グツールはないものかとをネットを探していたら、watij (ワットと発音?)なるものがあった。
IE で使うなら selenium よりも使い勝手が良さそう。試行錯誤の度合いも selenium を使うよりは少なかった気がする。
もちろん Alert や Confirm にも対応しており、子ウィンドウや webページダイアロ グにも対応している。ただし FireFox や Opera, Chrome などク ロスブラウザで使う必要があり、FireFox で Selenium IDE など強力な Webオペレーション記録ツールが使用可能なら Selenium を利用する方がコ ストパフォーマンスは良いかもしれない。
今回は IE のみで動く 昔ながらのビジネスア プリケーションをテストする必要があったので Watij を採用する事にした。ネット上にドキュメントがかなり少ないようなので、つまずいた点や参考になりそうな点をつらづらと綴っていく。
参考サイト
ダ ウンロード
こちらから
zip を解 凍し、lib 配下の jar ファイルをすべて eclipse プロジェクトなどにコピーしておくのを忘れないように。
※ダ ウンロードした zipファ イルの中 (src/java-test/watij) に テストクラスがあるので、テスト方法がわからない場合は参考にすればよい。かなり参考になると思う。
使用方法
私の環境では beanShell はうまく動かなかった事と、Java 方が馴染みがある事と、どうせ Java Web ア プリケーションをテストする為に使うので Java 技術者に広く展開できるよ うに Java UI でのテストを試みる。
IE ie = new IE(); ie.start("http://www.google.com"); ie.textField(name,"q").set("Watij"); ie.button("Google Search").click();のように書いてあるのだが name が解決できるわけがない。。
どうしてコレでみんなうまくいくのかが実はよくわからず。
自分なりの解決方法をで解決を試みる。*1
Symbol name = new AttributeFinder("name");結局 Symbol が見つからないだけなので、上記のようにあらかじめ指定して解決。
(BeanShell ではこのままでうまくいったりするのでしょうか?これがよくわからないです。あくまでも例文はそれくらいわかるやろ的なある程度抽象化したコードだったのでしょうか?)
その他のシンボルはこのような感じで指定できる。
Symbol value = new AttributeFinder("value"); Symbol text = new TextFinder(); Symbol xpath = new XPathFinder(); Symbol tag = new TagFinder(); Symbol url = new UrlFinder();ス クリーンショット
ie.windowCapture("C:\xxx\yyy\0000.png"); ie.windowCapture("./0000.png");Aタグの href属性に記述された特定の文字列を探し、そのリンク をクリックする方法。
ie.link(xpath,"//A[contains(@href,'javascript') and contains(@href,'shop=00001') and contains(@href,'dept=DA0001')]").click();例えば href=”javascript(‘shop=00001′,’dept=DA0001′,’sex=female’);” のように関数処理したりしている場合でもこのよ うな指定で画面中の任意のリンクをクリックできる。
xpath文 の記述中でHTMLタグは 大文字で記述しないとelementの検索がうまくいかないので注意が必要。
※ 2010.04.09 追記
この問題は
import static watij.finders.SymbolFactory.*;とする事で解決できる事を確認 ( Release 3.1.0にて確認済み。 )