2021年10月31日日曜日

自動テストの練習5 (UWSC編④) 右クリック




やりたいこと

 前回の続きになります。

UWPアプリの簡単なテスト(スモークテスト?)をUWSCでやってみるの4回目です。

4回目は右クリックする操作を自動化してみます。


最初に設定したテストケースのTC5, TC6になります。

IDTestCaseの説明TestCaseの手順出力期待値
TC5Aboutメニュー右クリック
Aboutメニューを選択
Aboutダイアログが表示される
TC6Settingsメニュー右クリック
Settingsメニューを選択
Settingsダイアログが表示される

ソース

ソースコードはこちらになります。

右クリックするところだけのコードになります。

---
// TC5 About
CheckAbout()

// About
PROCEDURE CheckAbout()

	WaitWindowText("memotter", "What", 10)
	
	id = GETID("memotter")
	
	//①右クリック
	openbtn = CLKITEM(id, "Open", CLK_RIGHTCLK)
	IF openbtn = TRUE 
		about = CLKITEM(id, "About")
		If about = TRUE
			PRINT "OK About成功"
			PrintAccText(id)	
						
			retOkt = CLKITEM(id, "OK")
		ELSE
			PRINT "NG About失敗"
		ENDIF 
	ELSE
		PRINT "右クリック失敗"	
	ENDIF
	
FEND



// ②AccTextを全部出す
PROCEDURE PrintAccText(id)
	NUM = GETITEM(id, ITM_ACCTXT)

	FOR j = 0 TO (NUM-1) 
		PRINT ALL_ITEM_LIST[j]
	NEXT

FEND

// ウィンドウの中のテキストが表示されるのを待つ
FUNCTION WaitWindowText(WindowTitle, text, timeOut)
	RESULT = FALSE	

	// ウィンドウが表示されるのをtimeOutの時間まで待つ
	FOR i = 0 TO timeOut
		//ウィンドウのID取得
		id = GETID(WindowTitle)
	
		staticText = GETITEM(id, ITM_STATIC)
		IF staticText <> 0
			FOR j = 0 TO staticText -1 
				n = POS(text, ALL_ITEM_LIST[j])  
				IFB n >= 1
					// PRINT text + "が見つかった"
					BREAK 2						
				ELSE
					// PRINT text + "が見つからない"
				ENDIF				
			NEXT
		ELSE
			PRINT "static text なし"
		ENDIF
		
		// 1秒待機
		SLEEP(1) 
	NEXT
	
FEND
---

解説

①右クリック
右クリックの操作自体は簡単で、標準関数のCLKITEM()の第3引数に、CLK_RIGHTCLKだけで実現ができます。

ちょっと悩んだのが、どこを右クリックするか? という問題になります。
この関数の場合なにもないところは、右クリックできないので、右クリックの目印になるコントロールが必要になります。

Openボタンを右クリックした場合もコンテキストメニューが表示されることが分かったので、①のように"Open"を右クリックするというコードになってます。

②アバウトダイアログのテキストを表示
成功した場合にPrintAccText(自作関数)でスタティク文字をコンソールに全部表示するようにしてます。
GETITEMの引数でITM_STATICというのもあるのですが、これだと文字列がとれない文字れるがあったので、ITM_ACCTXTを指定して取得してます。

表示された文字が正しいかどうかまでの判定はしてなく、文字列を表示するところまでとなってます。

結果


実行後はコンソールに文字が表示されます。

今回も特に苦労せず進められました。




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