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

来源:互联网 发布:陶瓷餐具 知乎 编辑:程序博客网 时间:2024/05/17 08:04

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

 

1.     发送键盘事件:

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

其中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

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/roger_ge/archive/2010/05/03/5552740.aspx
 

 

 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/roger_ge/archive/2010/05/03/5552740.aspx
value以及对应的key code如下表所列: