WIN32OLE使って楽をする
結合テストフェーズでは、
「Excelでテストデータを作成し、それを順番に作った画面に打ち込む!」
という作業をよくやります。
前々から思っていましたが、このExcelで作ったデータを見ながら画面に打ち込む作業はものすごく苦痛です。(´Д` )
そこで先日紹介した「Ruby on Windows」の影響を受けて、以下で自動化を試してみました。
- 画面遷移の制御は、WIN32OLEからIEを直接操作
- 入力するデータもWIN32OLEからExcelデータを直接読み込む
- 読み込んだデータを画面の項目に設定する部分はRubyでスクリプトをゴリゴリ書く
で結果はというと、かなりうまくいってご満悦。
一点詰まったのはIEの描画時間。
ie = WIN32OLE.new("InternetExplorer.Application")
ie.Visible = true
ie.Navigate "http://localhost/target"while ie.Busy
sleep 1
end#以降の処理へ〜
っていう具合にBusyプロパティだけを見てすぐに次の処理へ進むようにしていると、
画面が描画し終わる前に次に進んでしまう場合がある(※必ずそうなるわけではないところが詰まった)
ようで、次の画面に表示されるオブジェクトを探しに行って存在しない⇒エラー
という具合になってしまいました。
本にも書かれてましたが、この辺は環境毎に調整するしかないと思うので、
「sleep 1.5」
とかを次の処理に進む前に入れることで解決。
安定動作するようになりました。