如何使用ADB使用sendevent命令将触摸事件发送到设备?

我正尝试将触发事件发送到使用AndroidDebugBridge的设备,以便我可以为UItesting做一些基本的自动化。 我已经在LINK中进行了讨论。 我能够使用sendevent来模拟仿真器上的触摸,但无法在设备上做同样的事情。

就像在上面的链接中,模拟器似乎发出每个触摸6个事件(xcoord,ycoord,2为新闻,2为释放),很容易使用这个信息sendevents,但一个设备的触摸屏getevent似乎产生太多的事件。

有人设法从亚行发送触摸到设备? 你可以请分享解决scheme。

Android自带一个input命令行工具,可以模拟各种input事件。 为了模拟攻丝,它是:

 input tap xy 

您可以使用adb shell(> 2.3.5)远程运行命令:

 adb shell input tap xy 

为了做一个特定的行动(例如打开网页浏览器),你需要先弄清楚在哪里点击。 要做到这一点,你可以先运行:

 adb shell getevent -l 

一旦你按下了设备,在你想要的位置,你会看到这个输出:

 <...> /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告诉你一个键被按下(按下)位置2f5,69e,hex是757和1694。

如果您现在想要生成相同的事件,则可以在同一位置使用input点击命令:

 adb shell input tap 757 1694 

更多信息可以在以下urlfind:

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

2.3.5没有input tap ,只是input keyeventinput text你可以使用monkeyrunner:(这是https://stackoverflow.com/a/18959385/1587329上的答案副本):;

你可能想要像这样使用monkeyrunner :

 $ monkeyrunner >>> from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice >>> device = MonkeyRunner.waitForConnection() >>> device.touch(200, 400, MonkeyDevice.DOWN_AND_UP) 

你也可以做一个拖动,启动活动等。看看MonkeyDevice的api。

考虑使用Android的uiautomator ,使用adb shell uiautomator或直接使用SDK附带的.jar文件。

你不需要使用

adb shell getevent -l

命令,只需在设备的[开发者选项]中启用[显示触摸数据]即可获取X和Y.

更多信息可以在我的文章中find: https : //mobileqablog.wordpress.com/2016/08/20/android-automatic-touchscreen-taps-adb-shell-input-touchscreen-tap/