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

http://blog.csdn.net/roger_ge/article/details/5552740

转自csdn,实现模拟鼠标键盘系列

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

  1. 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

  1. 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

时间: 2024-10-18 04:06:05

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

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

(转)C#模拟键盘鼠标事件

原文 1.模拟键盘事件System.Windows.Forms.SendKeys以下是   SendKeys   的一些特殊键代码表.     键   代码       BACKSPACE   {BACKSPACE}.{BS}   或   {BKSP}       BREAK   {BREAK}       CAPS   LOCK   {CAPSLOCK}       DEL   或   DELETE   {DELETE}   或   {DEL}       DOWN   ARROW(下箭头键)

C#模拟键盘鼠标事件 SendKeys 的特殊键代码表(转)

使用 SendKeys 将键击和组合键击发送到活动应用程序.此类无法实例化.若要发送一个键击给某个类并立即继续程序流,请使用 Send.若要等待键击启动的任何进程,请使用 SendWait. 每个键都由一个或多个字符表示.若要指定单个键盘字符,请使用该字符本身.例如,若要表示字母 A,请将字符串“A”传递给方法.若要表示多个字符,请将各个附加字符追加到它之前的字符的后面.若要表示字母 A.B 和 C,请将参数指定为“ABC”. 加号 (+).插入符号 (^).百分号 (%).波浪号 (~) 以及

在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件

在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件 引言 这两天沉迷了Google SketchUp,刚刚玩够,一时兴起,研究了一下WebBrowser. 我在<WebBrowser控件使用技巧分享>一文中曾谈到过"我现在可以通过WebBrowser实现对各种Html元素的操控,唯独无法控制Html的上传控件",出于安全原因,IE没有对上传控件提供操控支持,这使得我们没法像控制其他控件一样用简单的代码进行赋值. 比较实际的解决方案就是模拟操作了,下面我就将演示

C# winform 模拟键盘鼠标操作

1.获取鼠标位置 private void timer1_Tick(object sender, EventArgs e) { // timer1.Stop(); // int x = Control.MousePosition.X; // int y = Control.MousePosition.Y; // label1.Text = string.Format("x:{0} y:{1}",x,y); // timer1.Start(); label1.Text = mouse()

新浪微博自动转发评论 源码 按键精灵实现 详细注释 几十行代码实现 涉及图像识别模拟键盘鼠标

自动翻页转发,自动滚屏,一条一条地转发. 1.打开微博,登录 2.打开按键精灵,进入调试 3.回到要转发的微博界面,按F10启动转发. 我的微博已经转发了很多条.不信可以看看:http://weibo.com/p/1005053019480453/myfollow 源码: Dim iy Rem head iy = 0 Rem nextfind FindPic 0,iy,1366,768,"Attachment:\zf.bmp",0.9,intX,intY If intX > 0

linux 处理键盘 鼠标事件

Linux下鼠标和键盘的模拟控制,也就是为手势和语音控制鼠标和键盘部分服务的. 有关于本系统构建的文章结构都会由三个部分来组织,一是该功能模块的介绍和在Linux下简单应用程序的实现:二是将该功能模块整合到交互系统(先以TLD为地基)中去:三是分析目前存在的问题与未来的解决构思. 一.input子系统和模拟程序编写: Linux 输入子系统是 Linux内核用于管理各种输入设备(键盘,鼠标,遥控杆,书写板等等)的.输入子系统分为三块: input core, drivers和 event han

【JS】键盘鼠标事件

一,键盘 keydown 表示按下键盘 keypress 表示按下键盘 keyup 表示键盘弹起 这三者的区别分别表现在发生的 先后顺序,获取到的键盘按钮值,已经对输入框的文本取值这三方面 先后顺序: 按照 keydown keypress keyup 顺序发生 键盘按钮值: 通过event对象的which属性获取键盘的值 keydown和keyup 能获取所有按键,不能识别大小写 keypress 不能获取功能键,如F1 SHIFT等,能够识别大小写 文本取值: keydown和keypres

js模拟键盘按键事件

1 var WshShell = new ActiveXObject('WScript.Shell') 2 WshShell.SendKeys('{ }'); 说明:大括号内的是键盘上的按键如: 空格:{ } A:{A}