您的位置:首页 > 运维架构 > Shell

Android自动化测试初探(五): 再述模拟键盘鼠标事件(adb shell 实现)

2012-07-24 15:05 786 查看
上一篇博文中讲述了通过Socket编程从外部向Emulator发送键盘鼠标模拟事件,貌似实现细节有点复杂。其实Android还有一种更简单的模拟键盘鼠标事件的方法,那就是通过使用adb shell 命令。

1. 发送键盘事件:

命令格式1:adb shell input keyevent “value”

其中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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐