本ページはプロモーションが含まれています

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のループ

動作例



2020-08-24

scrcpyを使用したAndroidスマートフォンのリモート操作

 AndoridスマートフォンをPCから操作可能になればSikuliXなどの自動操作ツールを用いて、テストの自動化やRPA、ゲームの周回操作の自動化などに活用できます。

リモート操作ツールの「scrcpy」についてメモを残します。


インストール

scrcpy

ダウンロードページよりファイルをダウンロードする。

実行ファイルをダウンロードした場合は、Zipファイルを展開し任意のフォルダに配置する。

例:C:\scrcpy


実行手順

scrcpyを使用したリモート操作手順は以下。

  1. AndoridとPCを優先で接続しADBのTCP接続を有効にする
    ADBデバッグの有効化については以下
    https://developer.android.com/studio/command-line/adb?hl=ja#Enabling
    コマンド例:adb tcpip 5555
  2. PCからWifi経由でADBを利用可能にする
    https://developer.android.com/studio/command-line/adb?hl=ja#wireless
    コマンド例:adb connect 192.168.1.3:5555
  3. scrcpyを起動する
    コマンド例:scrcpy -s 192.168.1.3 -p 5555 --bit-rate 5000K --max-size 720
  4. 終了時はscrcpyを×ボタンで終了させADB接続を解除する
    コマンド例:adb disconnect 192.168.1.3:5555


scrcpyのコマンドオプション

scrcpy実行時のオプションについては以下に記載されています。
https://github.com/Genymobile/scrcpy/blob/master/README.md


使いそうなオプションを以下にまとめます。

ロングオプション

ショートオプション

説明

--serial

-s

接続対象指定
複数のデバイスが接続されている場合、対象を指定する必要あり
--serial 192.168.0.1:5555

--max-size

-m

最大解像度指定

--bit-rate

-b

ビットレート(デフォルト8M)

--max-fps

 

最大キャプチャフレームレート
Android10以降で正式サポート

--crop

 

クロップ
画面の一部をクロップして表示する
--crop 1224:1440:0:0   # 1224x1440 at offset (0,0)

--lock-video-orientation

 

回転


コマンド例

scrcpy -s 192.168.1.3 -p 5555 --bit-rate 5000K --max-size 720

ネットワーク上の192.168.1.3 ポート5555に接続

ビットレートは5M、最大画面解像度は720px