スキップしてメイン コンテンツに移動

Android端末の操作を自動化する

システムの運用保守をやってると、必ず実機確認(サービス正常性確認)というモノをやらされる訳であります。
スマホアプリ操作なんかだと、複雑なうえに素早く実施しないとイケない。
はっきり言って、アラフォー男子には限界があります。そこで自動化を思いつきます。
FRep - Finger Replayerが有力そうだけど、Root化しないとイケない?業務端末では無理です!!
有償で良さ気なソフトもありそうですが、まずは自力でチャレンジ。調べて見るとadbコマンドを使ってタップやスワイプのイベントを端末に送信できることがわかりました。早速、作業に取り掛かります。

2015/05/05 時点でリリースされている最新版を使って開発環境を構築します。
開発環境となるPCのOSはWindows7 Professional SP1 64bit。
作業は全て管理者権限が付与されたユーザで実施しています。

1. Android SDK をインストール
ここからAndroid SDKをダウンロードします。
サイトの下の方に「SDK Tools Only」があるので、そこから[installer_r24.2-windows.exe]をダウンロードしてインストールします。


次にシステム環境変数の中の[Path]変数を編集し、以下のパスを登録します。
"C:\android-sdk-windows\platforms"
"C:\android-sdk-windows\tools"
  ※"C:\"はご自身のインストール先によって異なります。

2. PCにAndroid端末を繋げる
①Android端末本体の「設定」から「アプリケーション」>「開発」>「USBデバッグ」にチェック。
②Android端末をUSBでPCに接続。
③コマンドプロンプトを立ち上げ、adbコマンドで端末の接続を確認。
 > adb devices

以上で準備が整いました。
3. 画面キャプチャを撮って、座標を調べる
次に画面を操作する為、座標を調べます。画面キャプチャをペイント等のアプリで開いてみましょう。図の左下に座標が表示されます。ここではFacebookアイコンにカーソルを当てています。


4. 実際にコマンドで画面を操作してみる
DoSプロンプトから以下のコマンドを入力してみましょう。
 > adb shell input tap 1185 1713
ここでは、PCにつないだ端末の画面でFacebookアイコンがタップされました。このようにタップであれば「adb shell input tap X Y」、スワイプであれば「adb shell input swipe X1 Y1 X2 Y2」コマンドを使えば、画面を操作することができます。
※XYは座標 

5. 本題の自動化を試みる
コマンドと座標の組み合わせをバッチファイルにしてしまえばよい。
バッチファイル:hoge.bat
@echo off

SET startdate=%date%
SET starttime=%time%

SET /p ans="Run?(y)>"
IF /i NOT "%ans%" == "y" GOTO END

echo "アプリの起動"
adb shell input tap 1185 1713
rem SET /p ans="exit?(n)>"
IF /i "%ans%" == "n" GOTO END

echo "ボタンをタップ"
adb shell input tap 900 580

:END

echo 処理開始:%startdate% %starttime%
echo 処理終了:%date% %time%

@echo on
 このようなバッチファイルが用意できたら、DoSプロンプトから実行してみましょう。
 > hoge.bat
勝手に端末が動き出したと思います。今回のバッチではSETコマンドで実行可否を判定しています。終了させない場合は、1アクション毎に"n"以外をキー入力すると実行される為、半自動化となっています。
半自動化にしたのは、画面のロード時間が必要とされる為です。用途にあわせてSLEEP等を代用して貰えれば、自動化されたバッチ処理が実現できると思います。

コメント

このブログの人気の投稿

久しぶりに鈴虫寺に行ってみたら、今回もいい説法と限定御朱印をゲットしました!

久しぶりに鈴虫寺に行ってみたら、今回も良い説法を聞けました。 コロナの関係で、お茶は有りませんでしたが、お菓子は頂きました。 覚えている範囲で書いてみると、 苔は生き方をあらわしている。 苔は根がない。その為、葉っぱで雨を吸収している。 雨がふらない時は死んだふりして茶色くなってじっと耐えている。 雨が降ったときにパッと葉をひろげ青々と生い茂る。 人生も同じではないか、辛いとき、苦しいときはあるがじっと耐えていると、良くなるときが必ずくる。 祇園祭、釘を一本も使わずに組み立てている。その伝統を伝える為、今年は山鉾を組み立ててる。 お地蔵様に願い→日々、忙しい毎日を過ごしていると思います。お寺に来たときぐらい、本当の幸せを考えてみてはいいのでは? 『 即今只今(そっこんただいま) 』 とは 「即今」も「只今」も「今この瞬間」ということを指しており、ふたつ重ねることで今、この瞬間を一所懸命に生きることが大事ということ。 コロナ禍によって生きにくい世の中になってしまった。 楽しみにしていたイベントも中止になったり 人と会うことも少なくなったが 過去を悔やまず 未来を不安に思わず 今を一所懸命に生きましょう。 『洗心』コロナ禍の影響もあって、手も洗って心も洗おう。みたいなことを仰っていた。 心を洗うためには、人に良いことをするといいらしい。ただし見返りは求めてはいけない。 お寺の開山300年を間もなく迎えるということで、客殿の建替えと文化財の修復をされるそうです。その記念として限定の御朱印を3つ用意されてました。いずれも金色の文字が入っていて、ご利益がありそうです!