Silk Test と戯れる日々

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 を多用しているのだが、本格的に量産体制に入る前に修正するつもり。