2021年11月21日日曜日

自動テストの練習7 (UWSC編⑥) Tips

 


やりたいこと

前回の続きとなります。
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編はいったん終了にして次回からは別の自動化ツールを使って、同じことをしていきたいと思います。

0 件のコメント:
コメントを投稿