スマホアプリなどの検査で同じ手順を何度も繰り返したいことは時々発生するでしょう。
そんな時、スマホを自動で操作できたら効率よく作業をこなせるのにと思ったことがきっかけで、トライしてみました。
操作自動化の方法
今回、スマホ操作を自動化する方法は、画面内の座標を順にタップしていく方法にします。タップ操作の間に適宜waitを入れるという原始的なやり方です。
具体的には、adbのある場所にバッチファイルを置いて、それを実行することにします。
必要なもの
- android スマートフォン本体
- adb接続可能なPC(pathは通しておく前提です。)
adb接続は、android studioをごと持っている場合はそれで良いですが、adb接続だけが必要な場合は、platform-toolsフォルダ配下のみあれば事足ります。
以下のページからplatform-toolsフォルダのみをダウンロードできます。
https://developer.android.com/studio/releases/platform-tools?hl=ja
バッチファイル作成
試しに実行するバッチファイルでは、次の操作を自動操作してみます。
(※ 座標は機種ごとに異なる場合が多いと思います。)
- 左上にあるアイコンをタップ
- 2秒待機
- ホームボタンをタップ
※ 1~3を繰り返し
:LOOP
adb shell input tap 537 2269
adb shell sleep 2
adb shell input tap 122 230
goto:loop
この座標をどうやって割り出しているかというと、androidの開発者ツールの中にタップした座標を表示してくれる機能があります。
開発者向けオプション > 「入力」のあたりに「ポインタの位置」という設定があるのでONにする。
座標が画面上部に小さく表示されます。
こうして座標を確認しつつ、操作する順番に座標とwaitを交互に入れていきます。
waitがない場合、画面の描写が追い付かず操作したい対象が表示される前にタップしてしまうのでwait時間は調整が必要です。
スクロールが必要な場合は、次のようにすればOKです。
111 111 の座標から222 222 の座標までスライド操作を行う場合は、次のように記述します。
adb shell input swipe 111 111 222 222
batファイル実行
中身を書き終えたら、実行可能になります。
PCとandroid端末を接続してadbが実行可能な状態にして、batファイルをダブルクリックするだけで、自動操作が動き出すはずです。
アプリの自動テストや、大量データの作成など、アイディアを組み合わせればいろいろなことに活用できると思います。
一応書いておきますが、悪用は厳禁でお願いします。
Xiaomi端末での注意点
Xiaomi端末では、次のようなエラーが表示される場合があります。
java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission
これを回避するためには開発者オプションの中にある「USBデバッグ(セキュリティ設定)」を有効にする必要があります。
ONにするにはMiアカウントでログインしておく必要があるので、こちらも要注意です。
Originally posted 2020-08-28 23:38:29.