Edited at

IE操作とスクリーンショット撮りを自動化するExcelVBAモジュールを書いた。

More than 5 years have passed since last update.


概要

法人向けのシステム開発業務では、セキュリティの観点から自動テストのフレームワークを導入できない事があります。

そのような環境でも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が起動し、指定画面が開かれる

1.gif

検索欄に値が入力され、又、表記替えボタンが押される

2.gif

並び順の選択が変わる

3.gif

検索ボタンが押される

4.gif


感想

最初スクショを撮らずに記事を書いたけど、説得力がなくてビビった。

先のコードで本当に話している通りの動作ができるのか納得できない。

写真を提示された時の説得力は違う。


追記(2014/08/11)

ExcelVBA製のInternetExplorer向けUIテストツールを作ってみました。

■nezuQ/PaperTester

https://github.com/nezuQ/PaperTester