2020-08-29

SikuliXの汎用的な自動周回用スクリプト

SikuliXでAndroidスマホアプリケーションの自動耐久テストに向けて汎用的に使えるスクリプトを検討したのでメモを残します。

※スマホゲームの周回自動化が本当の目的 

スクリプト

#########################################
#  検索設定
#########################################
# 検索範囲とするウインドウ名
WINDOW_NAME = ""

IMGS = [
	# ここに検索対象のイメージパターンを追加する
]

#########################################
#  動作設定
#########################################
# 最小一致閾値 デフォルト 0.7
Settings.MinSimilarity = 0.80
# マウス移動のディレイ:0 = アニメーションなし
Settings.MoveMouseDelay = 0.1
# マウスダウンからアップするときの遅延時間 0.0 ~ 1.0
#Settings.ClickDelay = 0.1

#########################################
#  処理
#########################################
# APPNAMEのウインドウを探してRegion(検索範囲)に設定
app = App.focus(WINDOW_NAME)
reg = Region(App.focusedWindow())
reg.highlight(1,"green")

# ループ
while True:
	# 検索
	ms = reg.findAnyList(IMGS) 
	# 結果msはIMGSの順で見つかったものが格納される
	for m in ms:
		# クリック
		m.click()
		# 最初に見つかったものだけ処理して終了
		break
	sleep(1)

スクリプト説明

処理の流れは次のとおりです。

  1. 初期化
    # WINDOW_NAMEのウインドウをアクティブにする
    app = App.focus(WINDOW_NAME)
    
    # アクティブウインドウの位置・サイズの認識領域に設定
    reg = Region(App.focusedWindow())
    
    # 認識領域をハイライト表示(デバッグ用)
    reg.highlight(1,"green")
    
    
  2. 認識対象領域で画像検索
    ms = reg.findAnyList(IMGS)
  3. 最初に認識したものをクリック
    m.click()
  4. 2~3のループ

動作例



0 件のコメント:

コメントを投稿