先日、DroidKaigi2017で@operandoOSさんが発表されていたコマンドなしでぼくはAndroid開発できない話の中でinput
コマンドを初めて知ったので早速使ってみることにしました。
ログインを簡単に
アプリを開発しているとアプリのインストールやアンインストールを行うことが多く、その都度ログイン画面にIDとパスワードを入力するのは非常に面倒に感じていました。
そこでadb shell input
コマンドを使って楽をする方法を試してみました。
※一般的なユーザIDやパスワードを入力してログインする画面を想定しています。
input text : 文字列の入力
ユーザIDやパスワードを入力するための文字列送信を行います。
これは発表であった通りそのままinput text
に渡すだけです。
基本的にはマルチバイト文字は入力できないので注意。
adb shell input text <文字列>
input tap : 入力フォームのフォーカスを取得
input text
実行時に気づいたのがそもそも入力対象にフォーカスさせないといけないという問題。
ログインを自動化したいのにフォーカスさせるのだけ手動にしてしまってはあまり意味がないので座標を指定して画面上をタップしてフォーカスさせます。
※数値は入力ボックスの位置や端末によって調整する必要があります。
adb shell input tap 100 700
input keyevent : キーイベントの送信
ユーザIDからパスワードに遷移する際は以下のコマンドでTABキー押下を送信します。
adb shell input keyevent KEYCODE_TAB
次回からの入力を省略などのチェックボックスにチェックを付ける場合はスペースキーを送信します。
adb shell input keyevent KEYCODE_SPACE
入力後にログインを実行したい場合はエンターキーを送信します。
adb shell input keyevent KEYCODE_ENTER
まとめて実行
上記のコマンドを組み合わせて実行します。
adb shell "input tap 100 700 && input text <ユーザID> && input keyevent KEYCODE_TAB && input text <パスワード> && input keyevent KEYCODE_TAB && input keyevent KEYCODE_SPACE && input keyevent KEYCODE_ENTER"
流れとしては以下となります。コマンドの実行を待ってから次のコマンドを実行するように&&で接続しています。
1.input tap 100 700
:ユーザID入力ボックスをタップしてフォーカス
2.input text <ユーザID>
:ユーザIDを入力
3.input keyevent KEYCODE_TAB
:パスワード入力ボックスにフォーカスを遷移
4.input text <パスワード>
:パスワードを入力
5.input keyevent KEYCODE_TAB
:次回からの入力を省略チェックボックスにフォーカスを遷移
6.input keyevent KEYCODE_SPACE
:次回からの入力を省略チェックボックスにチェックをつける
7.input keyevent KEYCODE_ENTER
:ログイン実行
これでログイン画面からコマンド一発でログインすることができました!
もっといい方法などがあれば教えてください。