Har*_*ish 81 automation android touchscreen adb
我正在尝试使用AndroidDebugBridge将触摸事件发送到设备,以便我可以为UI测试做一些基本的自动化.我已经在LINK中进行了讨论.我可以使用sendevent模拟模拟器上的触摸,但无法在设备上执行相同的操作.
就像上面的链接一样,模拟器似乎每次触摸发出6个事件(xcoord,ycoord,2个用于按下,2个用于发布)并且很容易将这些信息用于sendevents,但是设备的触摸屏的getevent似乎产生太多的事件.
有人设法将ADB的触摸发送到设备吗?你能分享一下解决方案吗?
use*_*154 123
Android附带了一个input可以模拟杂项输入事件的命令行工具.要模拟点击,它是:
input tap x y
Run Code Online (Sandbox Code Playgroud)
您可以使用adb shell(> 2.3.5)远程运行命令:
adb shell input tap x y
Run Code Online (Sandbox Code Playgroud)
Tom*_*mas 56
要执行特定操作(例如打开Web浏览器),您需要先找出要点击的位置.为此,您可以先运行:
adb shell getevent -l
Run Code Online (Sandbox Code Playgroud)
按下设备后,在您想要的位置,您将看到此输出:
<...>
/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
Run Code Online (Sandbox Code Playgroud)
adb告诉你按下了一个键(按钮向下),位置为2f5,61e为十六进制,为757,十进制为1694.
如果您现在想要生成相同的事件,可以在同一位置使用输入tap命令:
adb shell input tap 757 1694
Run Code Online (Sandbox Code Playgroud)
更多信息可在以下网址找到:
https://source.android.com/devices/input/touch-devices.html http://source.android.com/devices/input/getevent.html
ser*_*inc 11
2.3.5没有input tap,只是input keyevent和input text
你可以使用monkeyrunner :(这是答案的副本/sf/answers/1327156981/):
你可能想要像这样使用monkeyrunner:
$ monkeyrunner
>>> from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
>>> device = MonkeyRunner.waitForConnection()
>>> device.touch(200, 400, MonkeyDevice.DOWN_AND_UP)
Run Code Online (Sandbox Code Playgroud)
你也可以做一个拖动,启动活动等.看看MonkeyDevice的api .
小智 5
你不需要用
亚行外壳程序getevent -l
命令,只需在设备的“开发人员选项”中启用[显示触摸数据]以获取X和Y。
在我的文章中可以找到一些更多信息:https : //mobileqablog.wordpress.com/2016/08/20/android-automatic-touchscreen-taps-adb-shell-input-touchscreen-tap/
建立在 Tomas 的回答之上,这是将位置点按位置查找为我发现的整数的最佳方法:
adb shell getevent -l | grep ABS_MT_POSITION --line-buffered | awk '{a = substr($0,54,8); sub(/^0+/, "", a); b = sprintf("0x%s",a); printf("%d\n",strtonum(b))}'
Run Code Online (Sandbox Code Playgroud)
使用adb shell getevent -l得到的事件列表中,使用grep命令ABS_MT_POSITION(获取与十六进制触摸事件的线),最后用awk来获得相关的十六进制值,剥夺他们的零和十六进制转换到整数。只有当您按下设备时,这才会在终端中连续打印 x 和 y 坐标。
然后你可以使用这个 adb shell 命令来发送命令:
adb shell input tap x y
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128449 次 |
| 最近记录: |