環境はありませんが、問題を調査しました。あなたがやったように、さまざまな記事がありますが、それらは常に一部の人には効果があるように見えますが、他の人には効果がないようです。電話ハードウェア/ Android-バージョン/ SDK-バージョンの組み合わせには違いがあるため、すべてのセットアップに単一のソリューションが存在しないというのが私の結論です。
何があなたのために働くかを見つけなければなりません。ソフトウェアのメジャーアップデートにより、常に開始点に戻れることに注意してください。
私が見つけた最も簡単な方法は、input tap x y
コマンドを使用することです:
adb shell input tap x y
すべてのinput
バージョンにtap
パラメーターがあるわけではありませんが、引数なしで起動すると、使用可能なすべてのパラメーターと構文が出力されます。
shell@m0:/ $ input
input
usage: input ...
input text <string>
input keyevent <key code number or name>
input [touchscreen|touchpad|touchnavigation] tap <x> <y>
input [touchscreen|touchpad|touchnavigation] swipe <x1> <y1> <x2> <y2> [duration(ms)]
input trackball press
input trackball roll <dx> <dy>
もう1つの方法は、Geteventを使用して、画面に触れたときに発生するイベントを記録することです。ここから取られたように:
一連のイベントを記録する
ファイルにデータを記録するようにpcをセットアップします(/tmp/android-touch-events.log
)
$ adb shell getevent | grep --line-buffered ^/ | tee /tmp/android-touch-events.log
- 電話で何かをする
- PCでadbコマンドを停止します
ctrl-c
記録されたイベントを再生する
このコマンドは、16進変換を行います awk
$ awk '{printf "%s %d %d %d\n", substr($1, 1, length($1) -1), strtonum("0x"$2), strtonum("0x"$3), strtonum("0x"$4)}' /tmp/android-touch-events.log | xargs -l adb shell sendevent
Geteventはパラメーターを16進数で表示しますが、10進数の入力のみを受け入れることに注意してください。上記のスクリプトはこれを修正しようとします。
monkeyrunnerは、ここで示すように、使用できる別のツールです。
次のようにmonkeyrunnerを使用できます。
$ monkeyrunner
>>> from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
>>> device = MonkeyRunner.waitForConnection()
>>> device.touch(200, 400, MonkeyDevice.DOWN_AND_UP)
ドラッグをしたり、アクティビティを開始したりすることもできます。MonkeyDeviceのAPIを
ご覧ください。
参照: