概要
法人向けのシステム開発業務では、セキュリティの観点から自動テストのフレームワークを導入できない事があります。
そのような環境でもUIの自動テストを行えるように、ExcelVBAでIE操作とスクリーンショット撮りができるクラスモジュールを用意しました。
MITライセンスで公開致しますので、ご自由にご改修下さい。
※内容に関しては、製作時間5時間なので色々とご容赦下さい。
コード
https://gist.github.com/nezuQ/421dc273ab20bde2e170
※SJISのコードは日本語が文字化けする為、UTF8に変換したコードも載せました。
※クラスモジュールのエクスポートファイルの拡張子が.cls、標準モジュールのが.basです。それらのエクスポートファイルはVBEからインポートできます。
注意事項
参照設定が必要です。
・Microsoft HTML Object Library
・Microsoft Internet Controls
32bit版PCで使う時はコード修正が必要です。
keybd_event関数とShowWindow関数は、
実行PCが32bit版か64bit版かで関数の書き方が変わります。
64bit版の関数を使い、32bit版の関数はコメントアウトしています。
動作確認は自PCでのみ行いました。
・Windows7(64bit版)
・Excel2010
API
開く(第1引数:URL文字列)
IEを最大化画面で起動し、指定のURLのWebサイトを開きます。
フォーカスを当てる(第1引数:画面コントロールのID)
ID指定した画面コントロールにフォーカスを当てます。
入力する(第1引数:テキストボックスのID, 第2引数:値)
ID指定したテキストボックスに値を入力します。
ラベルで選ぶ(第1引数:ドロップダウンリストのID, 第2引数:ラベル)
ID指定したドロップダウンリストで指定項目を選択状態にします。
ラベル(表示名)で指定します。
番号で選ぶ(第1引数:ドロップダウンリストのID、第2引数:番号)
ID指定したドロップダウンリストで指定項目を選択状態にします。
番号(インデックス)で指定します。
値で選ぶ(第1引数:ドロップダウンリストのID, 第2引数:値)
ID指定したドロップダウンリストで指定項目を選択状態にします。
値(Option.Value)で指定します。
クリックする(第1引数:画面コントロールのID)
ID指定した画面コントロールをクリックします。
型と値でクリックする(第1引数:画面コントロールの種類, 第2引数:画面コントロールの値)
画面コントロールの種類(ex.input)と値(Value)で指定した画面コントロールをクリックします。
待つ(第1引数:秒数)
指定した秒数だけ処理を止めます。
全体を撮る(第1引数:シート名, 第2引数:セル名)
スクリーンショット(全体)を撮り、指定のシート名・セル名の場所に貼り付けます。
アクティブ画面を撮る(第1引数:シート名, 第2引数:セル名)
スクリーンショット(アクティブ画面)を撮り、指定のシート名・セル名の場所に貼り付けます。
評価する(第1引数:関数名, 第2引数:引数1, 第3引数:引数2)
上記の関数を名前(文字列)で呼び出します。
第2引数は呼び出し先の第1引数に、第3引数は呼び出し先の第2引数に渡されます。
ワークシートに関数とその引数を書き連ねて実行していきましょう!
スクショ(デモ実行の結果)
先のクラスモジュールには、デモ実行のコードも付けています。
その実行結果をスクショで残します。
IEが起動し、指定画面が開かれる
感想
最初スクショを撮らずに記事を書いたけど、説得力がなくてビビった。
先のコードで本当に話している通りの動作ができるのか納得できない。
写真を提示された時の説得力は違う。
追記(2014/08/11)
ExcelVBA製のInternetExplorer向けUIテストツールを作ってみました。
■nezuQ/PaperTester
https://github.com/nezuQ/PaperTester