J'essaie d'envoyer des événements tactiles à un appareil à l'aide de adb Shell
commande, afin que je puisse faire une certaine automatisation de base pour les tests d'interface utilisateur. J'ai suivi la discussion dans certains fils précédents à ce sujet.
J'ai confirmé l'obtention des événements et l'utilisation de sendevent
, pour envoyer 6 événements pour chaque contact (xcoord, ycoord, 2
pour la presse, 2
pour publication) et il était facile d'utiliser ces informations avec sendevent
, mais la commande getevent
pour le périphérique à écran tactile semble générer beaucoup trop d'événements.
Quelqu'un a-t-il réussi à envoyer un événement tactile de adb
à un appareil? Pourriez-vous s'il vous plaît partager la solution.
Je travaille sur l'enregistrement des événements tactiles sur le téléphone. Après cela, je souhaite renvoyer le même événement à l'appareil dans le cadre des tests d'interface utilisateur.
Veuillez aider
Android est fourni avec un outil de ligne de commande input
qui peut simuler divers événements d'entrée.
Pour simuler un tap
, utilisez:
input tap x y
Exécutez la commande input
à distance en utilisant adb Shell
:
adb Shell input tap x y
Les autres options sont:
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>
Pour envoyer un événement tactile, vous devez:
1 Définissez les coordonnées:
adb Shell sendevent /dev/input/event2 3 0 x
adb Shell sendevent /dev/input/event2 3 1 y
2 Envoyer l'événement tactile (doit avoir une paire 0 0 0):
adb Shell sendevent /dev/input/event2 1 330 1
adb Shell sendevent /dev/input/event2 0 0 0
3 Envoyer l'événement de libération du doigt (doit avoir une paire 0 0 0):
adb Shell sendevent /dev/input/event2 1 330 0
adb Shell sendevent /dev/input/event2 0 0 0
Notez s'il vous plaît:
1 Vous pouvez enregistrer des événements:
adb Shell getevent
2 si vous utilisez getevent, toutes les valeurs d'événement sont en hexadécimal.
Cordialement, Yahor
J'ai réussi à enregistrer une session et à la rejouer avec uniquement bash et adb.
C'est ce que j'ai fait, j'espère que ça aide quelqu'un.
Configurer le PC pour enregistrer des données dans un fichier (/tmp/Android-touch-events.log
)
$ adb Shell getevent | grep --line-buffered ^/ | tee /tmp/Android-touch-events.log
ctrl-c
Cette commande effectuera la conversion hexadécimale dans 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
Vous voudrez peut-être utiliser monkeyrunner comme ceci:
$ monkeyrunner
>>> from com.Android.monkeyrunner import MonkeyRunner, MonkeyDevice
>>> device = MonkeyRunner.waitForConnection()
>>> device.touch(200, 400, MonkeyDevice.DOWN_AND_UP)
Vous pouvez également faire un glisser, démarrer des activités, etc. Jetez un œil à l'API pour MonkeyDevice .