J'essaie d'envoyer des événements tactiles à un périphérique à l'aide d'AndroidDebugBridge, afin de pouvoir effectuer quelques automatisations de base pour les tests d'interface utilisateur. J'ai suivi la discussion dans LINK . Je peux utiliser sendevent pour simuler le toucher sur des émulateurs, mais je ne peux pas faire la même chose sur un appareil.
Comme dans le lien ci-dessus, l'émulateur semble envoyer 6 événements pour chaque contact (xcoord, ycoord, 2 pour presse, 2 pour publication) et il était facile d'utiliser cette information pour envoyer des événements, mais un getevent pour l'écran tactile d'un périphérique semble générer beaucoup trop d'événements.
Quelqu'un a-t-il réussi à envoyer des contacts de la BAD à un appareil? Pourriez-vous s'il vous plaît partager la solution.
Android est livré avec un outil de ligne de commande input
qui peut simuler divers événements d'entrée. Pour simuler le tapotement, c'est:
input tap x y
Vous pouvez utiliser le shell adb (> 2.3.5) pour exécuter la commande à distance:
adb Shell input tap x y
Pour effectuer une action particulière (par exemple, ouvrir le navigateur Web), vous devez d’abord savoir où appuyer. Pour ce faire, vous pouvez d’abord lancer:
adb Shell getevent -l
Une fois que vous avez appuyé sur l'appareil, à l'emplacement de votre choix, vous verrez cette sortie:
<...>
/dev/input/event3: EV_KEY BTN_TOUCH DOWN
/dev/input/event3: EV_ABS ABS_MT_POSITION_X 000002f5
/dev/input/event3: EV_ABS ABS_MT_POSITION_Y 0000069e
adb vous indique qu'une touche a été enfoncée (bouton enfoncé) aux positions 2f5, 69e en hex qui est 757 et 1694 en décimal.
Si vous voulez maintenant générer le même événement, vous pouvez utiliser la commande tap d'entrée au même emplacement:
adb Shell input tap 757 1694
Plus d'informations peuvent être trouvées à:
https://source.Android.com/devices/input/touch-devices.htmlhttp://source.Android.com/devices/input/getevent.html
2.3.5 n'a pas eu input tap
, juste input keyevent
et input text
Vous pouvez utiliser le monkeyrunner pour cela: (il s'agit d'une copie de la réponse à l'adresse https://stackoverflow.com/a/18959385/1587329 ):
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époser, lancer des activités, etc. Jetez un coup d'œil à l'api pour MonkeyDevice .
Vous n'avez pas besoin d'utiliser
adb Shell getevent -l
pour ce faire, il vous suffit d’activer les options de développement du périphérique [Afficher les données tactiles] pour obtenir X et Y.
Quelques informations supplémentaires peuvent être trouvées dans mon article ici: https://mobileqablog.wordpress.com/2016/08/20/Android-automatic-touchscreen-taps-adb-Shell-input-touchscreen-tap/
Pensez à utiliser Android iautomator , avec adb Shell uiautomator [...] ou directement à l'aide du fichier .jar fourni avec le SDK.