最近开发一个新的接口,在调试的时候要手动输入蛮多参数,关键是参数又都太长,就专门看了下 adb 有木有模拟输入,果然adb shell里是有的。这样以后开发调试、自动化测试等就更加方便了。专门简单总结下:
ADB命令系列之 Base Command:https://blog.bihe0832.com/adb-base.html
重点介绍一些基本的adb命令,例如devices,start-server,kill-server,install,uninstall,push,pull,bugreport,logcat等。
ADB命令系列之 Advanced Command:https://blog.bihe0832.com/adb-advanced.html
重点介绍一些相对比较复杂的adb命令,主要是adb shell 相关的。例如screencap,monkey,getprop,setprop,pm,am,dumpsys等。
ADB命令系列之 adb shell input:https://blog.bihe0832.com/adb-shell-input.html
重点介绍adb shell input的用法,包括怎么输入内容,怎么模拟按键,模拟屏幕滑动等各种输入模拟。
ADB命令系列之 再说ADB:https://blog.bihe0832.com/review_adb.html
重点结合使用场景介绍ADB 的使用,例如解锁手机、截屏、Monkey点击、获取厂商机型等
ADB命令系列之 ADB快捷输入法:https://blog.bihe0832.com/input.html
主要解决 ADB hell input 无法输入中文的问题
input可以用来模拟各种输入设备的输入操作。
Usage: input [<source>] <command> [<arg>...]
The sources are:
trackball
joystick
touchnavigation
mouse
keyboard
gamepad
touchpad
dpad
stylus
touchscreen
The commands and default sources are:
text <string> (Default: touchscreen)
keyevent [--longpress] <key code number or name> ... (Default: keyboard)
tap <x> <y> (Default: touchscreen)
swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll <dx> <dy> (Default: trackball)
输入命令中text 和 keyevent是通用的;tap和swipe适用于触摸屏;而press和roll用于有触摸球的设备,由于使用的很少,因此不做说明。
主要用于在输入框中输入内容。命令很简单。例如:
adb shell input text "hello,world"
主要用于模拟键盘的输入,因此是在用键盘的地方才用得到。例如:
adb shell input keyevent 67
按键键码 | 功能 | 对应Android定义KeyEvent |
---|---|---|
1 | 按menu键 | KEYCODE_MENU |
3 | 按home键 | KEYCODE_HOME |
4 | 按back键 | KEYCODE_BACK |
21 | 光标左移 | KEYCODE_DPAD_LEFT |
22 | 光标右移 | KEYCODE_DPAD_RIGHT |
67 | 按删除按钮 | KEYCODE_DEL |
http://developer.android.com/reference/android/view/KeyEvent.html
主要用于模拟手指在屏幕的滑动。例如:
adb shell input swipe 0 20 300 500 #意思从屏幕(0,20)滑动到(300,500)
主要用于模拟手指在屏幕的轻触点击。例如:
adb shell input tap 100 400