6月に入ってから、Silk Test(画面操作が必要なテストを自動化するためのツール)をいじっている。ここ2〜3日、ようやく体調が戻ってきたので、けっこう楽しく戯れている。テストコード(以下、スクリプト)を書くのは、なぜか嫌いではない。
あ、Silk Test には、スクリプトではなくGUIでテストを作成する「ビジュアルテスト」という機能もついている。が、生産性や可読性の観点から、採用を見送った。この機能は、たぶん、ユーザ側の人たちが対象なのだろうと思う。ちなみに、ビジュアルテストとスクリプトの相互変換はできない。このあたり、QTP ほどは使い勝手がよくはない。ん?今は、UTF っていうのか。
で、Webアプリケーションのボタンなどのオブジェクトに、フォーカスが当たっているかどうか、自動で検証をしたいのだが、、これが、いい感じで苦戦している。
IFocusable インターフェイスを実装しているオブジェクトなら、IsFocused メソッドによりできるかもしれない。IMoveable インターフェイスを実装しているオブジェクトなら、GetFocus メソッドによりできるかもしれない。
でも、DomButton オブジェクトや、DomLink オブジェクトには、こういったメソッドが実装されてなさそうだ。ボタンなどのオブジェクトが保持するプロパティのうち、"focus"という文字列を含む全プロパティを試してみたが、ダメだった。。Help!!
スクリプトは、VB .NETで記述するのだが、自分はJavaとシェルスクリプトがメインだったので、これまた苦戦している。
なんかよくわからないが、色々とコツがいるっぽい。例えば、次のように、テキストエリア内の改行を確認するのに、改行コードとして「vbLf」を使わないと、うまくいかない。Windows上で実行しているのに、なぜ改行が「vbCrLf」ではないのか。。
' うまくいくケース With _desktop.BrowserApplication("BrowserApplication") With .BrowserWindow("BrowserWindow") .DomTextField("TextField").SetFocus() .DomTextField("TextField").TypeKeys("<Ctrl+a><Delete>") .DomTextField("TextField").PressKeys("いろは<Enter><Enter>にほへと<Enter>") Workbench.Verify( "いろは" & vbLf & "にほへと", .DomTextField("TextField").getProperty("value"), "入力した日本語が確定し、テキエリア内で改行されること") End With End With
ちなみに、Silk Testの機能を使ってWebアプリケーションに対する動作を記録したときに、自動生成されるスクリプトは、上記のような感じになる。なので、With 〜 End With を多用しているのだが、本格的に量産体制に入る前に修正するつもり。