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

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等を代用して貰えれば、自動化されたバッチ処理が実現できると思います。

コメント

このブログの人気の投稿

sendmailでの転送設定

某システムにてメールを配信する機能を開発へ依頼。 受け取った後、PHPの mb_send_mail はsendmailが無いと動かない事実を伝えられる。 うちのメールサーバはPostfixですよ。。。 Σ(|||▽||| ) 仕方が無いので、WEBサーバにsendmailを立て DMZ 内のpostfixへリレーするようする。 意外と内部のメールサーバに転送する文献がなかったので、備忘録として残すことにした。 ■sendmail-cf-8.13.8-8.el5.i386.rpmのインストール 設定ファイルをコンパイルするm4コマンドを使う為に必要。     ・モジュールの確認           # rpm -qa | grep sendmail         sendmail-8.13.8-8.el5         sendmail-cf-8.13.8-8.el5         「sendmail-cf-8.13.8-8.el5」がインストールされていなければ以下を実施     ・パッケージのインストール           # rpm -ivh sendmail-cf-8.13.8-8.el5.i386.rpm     ・再度モジュールの確認           # rpm -qa | grep sendmail         sendmail-8.13.8-8.el5         sendmail-cf-8.13.8-8.el5 ■hostsファイルの確認           ・hostnameの確認           # hostname        ...