Comment utiliser la BAD pour envoyer des événements tactiles à l'appareil en utilisant la commande sendEvent?

StackOverflow https://stackoverflow.com/questions/3437686

Question

Je suis en train d'envoyer des événements tactiles à un appareil à l'aide AndroidDebugBridge, afin que je puisse faire une automatisation de base pour les tests UI. J'ai suivi la discussion dans LINK . Je suis en mesure d'utiliser sendEvent pour toucher Simuler sur émulateurs, mais incapable de 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, coordY, 2 pour la presse, 2 pour la libération) et il était facile d'utiliser ces informations à sendEvents, mais getevent pour l'écran tactile pour une appareil semble générer beaucoup trop d'événements.

A quelqu'un a réussi à envoyer toucher de la BAD à un appareil? Pourriez-vous s'il vous plaît partager la solution.

Était-ce utile?

La solution

Android est livré avec un outil de ligne de commande input qui permet de simuler des événements d'entrée divers. Pour simuler tapotant, il 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

Autres conseils

Pour faire une action particulière (par exemple pour ouvrir le navigateur Web), vous devez d'abord savoir où robinet. Pour ce faire, vous pouvez d'abord exécuter:

adb shell getevent -l

Une fois que vous appuyez sur l'appareil, à l'emplacement que vous voulez, 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 dit qu'une touche a été pressée (bouton vers le bas) à la position 2F5, 69e dans l'hexagone 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 de prise d'entrée à la même position:

adb shell input tap 757 1694

Plus d'informations sont disponibles sur:

https://source.android.com/devices/input/touch- devices.html http://source.android.com/devices/input/getevent.html

2.3.5 n'a pas input tap, juste input keyevent et input text Vous pouvez utiliser le monkeyrunner pour elle: (ce qui est une copie de la réponse à la https://stackoverflow.com/a/18959385/1587329 ):

  

Vous pouvez 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 glisser, etc. commencer activies   Jetez un oeil à l'api MonkeyDevice .

Vous ne pas besoin d'utiliser

  

adb shell getevent -l

commande, il vous suffit de l'activer dans les options de développement sur le périphérique [Afficher les données tactile] pour obtenir X et Y.

Quelques informations 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 uiautomator , avec adb uiautomator shell [.. .] ou directement en utilisant le .jar qui vient avec le kit de développement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top