zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    DotNet的JSON序列化与反序列化
    DotNet指定文件显示的尺寸
    将文本文件的内容存储在DataSet中的方法总结
    Apple的LZF算法解析
    DotNet常用排序算法总结
    C#创建安全的字典(Dictionary)存储结构
    C#创建安全的栈(Stack)存储结构
    转化代码:添加在您网页中用户触发转化行为之后的地方。添加方法
    nginx配置ThinkPHP5二级目录访问
    好久没写原生的PHP调用数据库代码了分享个
  • 原文地址:https://www.cnblogs.com/xu-neal/p/3754406.html
Copyright © 2011-2022 走看看