Android自动化测试初探-5:再述模拟键盘鼠标事件(adb shell 实现)
2010-07-28 17:01
上一篇博文中讲述了通过Socket编程从外部向Emulator发送键盘鼠标模拟事件,貌似实现细节有点复杂。其实Android还有一种更简单的模拟键盘鼠标事件的方法,那就是通过使用adb shell 命令。
1.    发送键盘事件:
命令格式1:adb shell input keyevent “value”
input命令
其中value以及对应的key code如下表所列:
KeyEvent Value
KEYCODE
Comment

0
KEYCODE_UNKNOWN


1
KEYCODE_MENU
在SDK2.1的模拟器中命令失效,sendevent命令可行

2
KEYCODE_SOFT_RIGHT


3
KEYCODE_HOME


4
KEYCODE_BACK


5
KEYCODE_CALL


6
KEYCODE_ENDCALL


7
KEYCODE_0


8
KEYCODE_1


9
KEYCODE_2


10
KEYCODE_3


11
KEYCODE_4


12
KEYCODE_5


13
KEYCODE_6


14
KEYCODE_7


15
KEYCODE_8


16
KEYCODE_9


17
KEYCODE_STAR


18
KEYCODE_POUND


19
KEYCODE_DPAD_UP


20
KEYCODE_DPAD_DOWN


21
KEYCODE_DPAD_LEFT


22
KEYCODE_DPAD_RIGHT


23
KEYCODE_DPAD_CENTER


24
KEYCODE_VOLUME_UP


25
KEYCODE_VOLUME_DOWN


26
KEYCODE_POWER


27
KEYCODE_CAMERA


28
KEYCODE_CLEAR


29
KEYCODE_A


30
KEYCODE_B


31
KEYCODE_C


32
KEYCODE_D


33
KEYCODE_E


34
KEYCODE_F


35
KEYCODE_G


36
KEYCODE_H


37
KEYCODE_I


38
KEYCODE_J


39
KEYCODE_K


40
KEYCODE_L


41
KEYCODE_M


42
KEYCODE_N


43
KEYCODE_O


44
KEYCODE_P


45
KEYCODE_Q


46
KEYCODE_R


47
KEYCODE_S


48
KEYCODE_T


49
KEYCODE_U


50
KEYCODE_V


51
KEYCODE_W


52
KEYCODE_X


53
KEYCODE_Y


54
KEYCODE_Z


55
KEYCODE_COMMA


56
KEYCODE_PERIOD


57
KEYCODE_ALT_LEFT


58
KEYCODE_ALT_RIGHT


59
KEYCODE_SHIFT_LEFT


60
KEYCODE_SHIFT_RIGHT


61
KEYCODE_TAB


62
KEYCODE_SPACE


63
KEYCODE_SYM


64
KEYCODE_EXPLORER


65
KEYCODE_ENVELOPE


66
KEYCODE_ENTER


67
KEYCODE_DEL


68
KEYCODE_GRAVE


69
KEYCODE_MINUS


70
KEYCODE_EQUALS


71
KEYCODE_LEFT_BRACKET


72
KEYCODE_RIGHT_BRACKET


73
KEYCODE_BACKSLASH


74
KEYCODE_SEMICOLON


75
KEYCODE_APOSTROPHE


76
KEYCODE_SLASH


77
KEYCODE_AT


78
KEYCODE_NUM


79
KEYCODE_HEADSETHOOK


80
KEYCODE_FOCUS


81
KEYCODE_PLUS


82
KEYCODE_MENU


83
KEYCODE_NOTIFICATION


84
KEYCODE_SEARCH


85
TAG_LAST_KEYCODE
命令格式2:adb shell sendevent [device] [type] [code] [value]
如: adb shell sendevent /dev/input/event0 1 229 1 代表按下按下menu键
      adb shell sendevent /dev/input/event0 1 229 0 代表按下松开menu键
说明:上述的命令需组合使用
另外所知道的命令如下:
Key Name                        CODE
MENU                                229
HOME                                102
BACK (back button)            158
CALL (call button)              231
END (end call button)        107
2.    发送鼠标事件(Touch):
命令格式:adb shell sendevent [device] [type] [code] [value]
情况1:在某坐标点上touch
如在屏幕的x坐标为40,y坐标为210的点上touch一下,命令如下
adb shell sendevent /dev/input/event0 3 0 40
adb shell sendevent /dev/input/event0 3 1 210
adb shell sendevent /dev/input/event0 1 330 1 //touch
adb shell sendevent /dev/input/event0 0 0 0      //it must have
adb shell sendevent /dev/input/event0 1 330 0 //untouch
adb shell sendevent /dev/input/event0 0 0 0 //it must have
注:以上六组命令必须配合使用,缺一不可
情况2:模拟滑动轨迹(可下载并采用aPaint软件进行试验)
如下例是在aPaint软件上画出一条开始于(100,200),止于(108,200)的水平直线
adb shell sendevent /dev/input/event0 3 0 100 //start from point (100,200)
adb shell sendevent /dev/input/event0 3 1 200
adb shell sendevent /dev/input/event0 1 330 1 //touch
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 3 0 101 //step to point (101,200)
adb shell sendevent /dev/input/event0 0 0 0
……………………                                                  //must list each step, here just skip
adb shell sendevent /dev/input/event0 3 0 108 //end point(108,200)
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 1 330 0 //untouch
adb shell sendevent /dev/input/event0 0 0 0

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。