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小时内删除。
发表评论