读书人

Android自动化测试初探(5): 再述模拟

发布时间: 2012-06-28 15:20:03 作者: rapoo

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

上一篇博文中讲述了通过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

?

读书人网 >其他数据库

热点推荐