やりたいこと
UWPアプリの簡単なテスト(スモークテスト?)をUWSCでやってみるの6回目です。
前回で一通り完了したので、テストをブラッシュアップするための便利な小技をまとめておきます。
Print文
標準出力とか、デバック文のような機能です。
デバックしたいときや、処理の結果を表示したい場合に使用できます。
PRINT "成功"
PRINT "失敗"
のように書くとUWSCの小窓に文字が表示されます。
PRINTした文字列は、ログファイルとしても記録されるので、後で確認することも可能です。
UWSCを右クリック > 「.INI/.LOG Folder(F)」メニューを選択
フォルダにある
「UWSC.LOG」がログファイル
メモ帳で開くとPRINTしたものが記録されている。
結構便利です。
ログの最大行数はUWSC.iniのLogLinesで定義されてます。
ログファイル
PRINT文でもUWSCの標準のログは残るのですが、
自分専用のログを残したい場合もあると思います。
スクリプトが存在するフォルダに「LogFile.txt」というファイルを作成し、追記していく自作関数を作ってみました。
インプットのstrに日付, 時刻を付与してファイルに出力する関数です。
こちらになります。
// logファイルに書き込む
PROCEDURE WriteLog(str)
// 日付作成
GETTIME()
dateTime = G_TIME_YY + "/" + G_TIME_MM + "/" + G_TIME_DD + "_" + G_TIME_HH + ":" + G_TIME_NN + ":" + G_TIME_SS
// ファイル書き込み
fid = FOPEN("LogFile.txt", F_READ or F_WRITE) // 追記
FPUT(fid , dateTime + "<#TAB>" + str)
FCLOSE(fid )
FEND
ログファイルの中身はこのようになります。
スクリーンショット
自動テストの操作の途中でスクリーンショットに残しておきたいということもあると思います。
UWSCではSAVEIMG()という関数で実現できます。
この関数を用いて、スクリプトが存在するフォルダの直下にIMGというフォルダを作成して、そこに日付をファイル名にしてスクリーンショットを保存していく自作関数を作ってみました。
こちらになります。
// スクリーンショット
PROCEDURE MySaveImg()
// 日付作成
GETTIME()
dateTime = "" + G_TIME_YY + G_TIME_MM + G_TIME_DD + "_" + G_TIME_HH + G_TIME_NN + G_TIME_SS + G_TIME_ZZ
filename = "IMG\" + dateTime
// フォルダ作成
Doscmd("mkdir " + "IMG")
// スクリーンショット
SaveImg(filename, "", "", "", "", "", "", 50)
FEND
SAVEIMG()の最後の引数で指定している50は、圧縮率を表しています。
1が高圧縮、100は低圧縮になります。
このような感じにスクリーンショットができていきます。
各テストの実施前後などに入れておくと、
遡って結果を確認することができて便利です。
スリープ
SLEEP(秒数)
指定した秒数だけスクリプトを一時停止することができます。
タイミングの問題でスクリプトがうまく動作しない場合などに使えます。
UWSCのヘルプ
関数の使い方がわからない場合などは、UWSCのヘルプが軽量で、かつ分かりやすいです。
UWSCを右クリック > Help メニュー
コントロールの名称を取得
アクセスしたいコントロールの名称を知りたい時が出てくると思います。
(方法1)
UWSCは操作を記録することができるので、記録機能をつかって、目的のコントロールを操作して、記録した操作を保存することで、アクセスしたいコントロールの名称やIDを確認することができます。
(方法2)
GETITEM()という関数を使うことでコントロールの名称を取得することができます。
以下のサンプルは、"ウィンドウタイトル"のところを対象のアプリのウィンドウタイトルに変更すると、GETITEMでコントロールの名称を取得するものとなります。
GID = GETID("ウィンドウタイトル") // ここにコントロールを取得したいウィンドウのタイトルを指定する
GetItemAll(GID)
PROCEDURE GetItemAll(GID)
PRINT "ボタン"
NUM = GETITEM(GID,ITM_BTN)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "リストボックス、コンボボックス"
NUM = GETITEM(GID,ITM_LIST)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "タブコントロール"
NUM = GETITEM(GID,ITM_TAB)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "メニュー"
NUM = GETITEM(GID,ITM_MENU)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "ツリービュー"
NUM = GETITEM(GID,ITM_TREEVEW)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "リストビュー"
NUM = GETITEM(GID,ITM_LSTVEW)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "エディットボックス"
NUM = GETITEM(GID,ITM_EDIT)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "スタティックコントロール"
NUM = GETITEM(GID,ITM_STATIC)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "ステータスバー"
NUM = GETITEM(GID,ITM_STATUSBAR)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "ツールバー"
NUM = GETITEM(GID,ITM_TOOLBAR)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "アクセシビリティ用インターフェース経由でのクリック可能なオブジェクト"
NUM = GETITEM(GID,ITM_ACCCLK)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
PRINT "アクセシビリティ用インターフェース経由でのテキスト"
NUM = GETITEM(GID,ITM_ACCTXT)
FOR i = 0 TO (NUM-1)
PRINT (i+1) + "番目:<#TAB>" + ALL_ITEM_LIST[i]
NEXT
FEND
まとめ
UWSC編のしめとして、便利な小技をまとめてみました。
ほかにも見つかったら追記していきたいと思います。
UWSC編はいったん終了にして次回からは別の自動化ツールを使って、同じことをしていきたいと思います。