Apesar de não ter seu ambiente, examinei o problema. Existem vários artigos para serem encontrados, como você fez, que sempre parecem trabalho para algumas pessoas mas não para outras. A minha conclusão é que existem diferenças entre combinações de phone-hardware / versão Android / versão SDK que faz com que não haja uma solução para todas as configurações.
Você terá que descobrir o que funciona para você. tendo em mente que uma grande A atualização do software sempre pode enviar você de volta ao ponto de partida.
O método mais simples que eu encontrei é usar o comando input tap x y
:
adb shell input tap x y
Nem todas as versões input
têm o parâmetro tap
, mas iniciando sem
argumentos imprimirão todos os parâmetros disponíveis e a sintaxe:
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>
Outra maneira é usar Getevent para registrar os eventos que acontecem quando você toca na tela. Conforme retirado de aqui :
Record a series of events
Set up the pc to record data in a file (
/tmp/android-touch-events.log
)$ adb shell getevent | grep --line-buffered ^/ | tee /tmp/android-touch-events.log
- do some stuff on the phone
- stop the adb command on the pc with
ctrl-c
Replay the recorded events
This command will do the hex conversion in
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
Cuidado com a pegadinha que o Getevent exibe seus parâmetros em hexadecimal, mas somente aceita entrada em decimal, que o script acima tenta corrigir.
monkeyrunner é outra ferramenta que você pode usar, como demonstrado aqui :
You might want to use monkeyrunner like this:
$ monkeyrunner >>> from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice >>> device = MonkeyRunner.waitForConnection() >>> device.touch(200, 400, MonkeyDevice.DOWN_AND_UP)
You can also do a drag, start activies etc. Have a look at the api for MonkeyDevice.
Referências: