Monkey详解(脚本篇---获取坐标)
2017-08-24 18:43
218 查看
坐标是Monkey脚本的核心。Monkey提供了选取控件的API,而坐标是API Input Param的必要参数。那么如何获取控件的坐标呢?
同款机型,不同分辨率下的绝对坐标相同。但不同分辨率下,相对坐标不同。需要两个步骤。
若无屏幕触碰事件,则返回如上信息。即设备名称。
若触碰屏幕,则将看到,在设备信息之后,又有结果输出。
有四列信息,分别为:设备名称,Code,Type,Value.
Code是指:该事件是什么。
Type是指:事件的相关参数
Value是指:事件参数的值。
Code的值很多,我们这里只需要记住一个。
0003—>绝对坐标。
另外,买一赠三
0000—>同步事件。代表某一操作的完成。
0001—>key_broad。
0002—>相对坐标。
不同的Code有不同的Type。下面我们来看绝对坐标的Type。
当然,我们也只关注两个值。
0035—>绝对坐标X
0036—>绝对坐标Y
例子中的值X,Y分别为0x1ef,0x3fe。转换为十进制为495,1022。
目的达到,Ctrl+C,结束getEvent。
转换公式为:
注:其中数值都为十进制。
那么如何获取X,Y轴的最大最小值呢?
使用getevent的-p参数获取。
我们可以很容易的找到0035,0036。
那么X轴,最大值为max 1079,最小值为min 0。
Y轴,最大值为max 1919,最小值为min 0。
那么分辨率呢?
剩下的就是计算了。
至此,坐标已获取完毕。之后就是Monkey API的使用问题了。
我们将在下一篇中讲解。
同款机型,不同分辨率下的绝对坐标相同。但不同分辨率下,相对坐标不同。需要两个步骤。
(1)获取当前绝对坐标。
在shell 中使用getevent(大小写敏感),获取当前Event。C:\Users\XXXX>adb shell HWMHA:/ # getEvent /system/bin/sh: getEvent: not found 127|HWMHA:/ # getevent add device 1: /dev/input/event5 name: "huawei,touchscreen" could not get driver version for /dev/input/mouse0, Not a typewriter add device 2: /dev/input/event2 name: "hisi_on" add device 3: /dev/input/event1 name: "hisi_gpio_key" add device 4: /dev/input/event3 name: "fingerprint" add device 5: /dev/input/event4 name: "hi3660_HI6403_CARD Headset Jack" add device 6: /dev/input/event0 name: "soundtrigger_input_dev" could not get driver version for /dev/input/mice, Not a typewriter
若无屏幕触碰事件,则返回如上信息。即设备名称。
若触碰屏幕,则将看到,在设备信息之后,又有结果输出。
/dev/input/event5: 0003 003a 00000032 /dev/input/event5: 0003 0035 000001ef /dev/input/event5: 0003 0036 000003fe /dev/input/event5: 0003 0039 00000000 /dev/input/event5: 0000 0002 00000000 /dev/input/event5: 0001 014a 00000001 /dev/input/event5: 0000 0000 00000000 /dev/input/event5: 0000 0002 00000000 /dev/input/event5: 0001 014a 00000000 /dev/input/event5: 0000 0000 00000000
有四列信息,分别为:设备名称,Code,Type,Value.
Code是指:该事件是什么。
Type是指:事件的相关参数
Value是指:事件参数的值。
Code的值很多,我们这里只需要记住一个。
0003—>绝对坐标。
另外,买一赠三
0000—>同步事件。代表某一操作的完成。
0001—>key_broad。
0002—>相对坐标。
不同的Code有不同的Type。下面我们来看绝对坐标的Type。
当然,我们也只关注两个值。
0035—>绝对坐标X
0036—>绝对坐标Y
例子中的值X,Y分别为0x1ef,0x3fe。转换为十进制为495,1022。
目的达到,Ctrl+C,结束getEvent。
(2)根据分辨率对坐标值进行转换。
转换需要五个参数,即X轴的最大值,最小值,Y轴的最大值,最小值,当前的分辨率。转换公式为:
相对坐标X =(X-X轴最小值)*分辨率X/(X轴最大值-X轴最小值) 相对坐标Y =(Y-Y轴最小值)*分辨率Y/(Y轴最大值-Y轴最小值)
注:其中数值都为十进制。
那么如何获取X,Y轴的最大最小值呢?
使用getevent的-p参数获取。
130|HWMHA:/ # getevent -p add device 1: /dev/input/event5 name: "huawei,touchscreen" events: KEY (0001): 003b 003c 003d 003e 003f 0041 0042 0043 0044 0057 0058 00bd 00be 00bf 00c0 00c1 0145 014a ABS (0003): 0000 : value 0, min 0, max 1079, fuzz 0, flat 0, resolution 0 0001 : value 0, min 0, max 1919, fuzz 0, flat 0, resolution 0 0018 : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0 0030 : value 0, min 0, max 15, fuzz 0, flat 0, resolution 0 0032 : value 0, min 0, max 100, fuzz 0, flat 0, resolution 0 0033 : value 0, min 0, max 100, fuzz 0, flat 0, resolution 0 0035 : value 0, min 0, max 1079, fuzz 0, flat 0, resolution 0 0036 : value 0, min 0, max 1919, fuzz 0, flat 0, resolution 0 0039 : value 0, min 0, max 15, fuzz 0, flat 0, resolution 0 003a : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
我们可以很容易的找到0035,0036。
那么X轴,最大值为max 1079,最小值为min 0。
Y轴,最大值为max 1919,最小值为min 0。
那么分辨率呢?
C:\Users\XXXX>adb shell wm size Physical size: 1080x1920
剩下的就是计算了。
至此,坐标已获取完毕。之后就是Monkey API的使用问题了。
我们将在下一篇中讲解。
相关文章推荐
- 详解在bash脚本中如何获取自身路径
- js坐标位置详解 及获取(ie ff)
- 详解在bash脚本中如何获取自身路径
- WordPress中用于获取及自定义头像图片的PHP脚本详解
- 获取View点击位置坐标(详解)
- WordPress中用于获取及自定义头像图片的PHP脚本详解
- 详解在bash脚本中如何获取自身路径(转)
- Qt获取控件位置坐标详解
- [Android 测试] 压力稳定性测试之: Monkey 详解分析脚本
- Monkey详解(脚本篇---Monkey API)
- 获取鼠标坐标脚本
- [Android 测试] 压力稳定性测试之: Monkey 详解分析脚本(转载)
- 详解在bash脚本中如何获取自身路径
- android之touch事件获取控件坐标详解
- GIMP 一个按图片的像素点获取坐标的软件
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- Openwrt系统中shell脚本获取配置文件信息解读
- PHP获取某个脚本的执行时间,精度在0.01秒左右
- Android Monkey日志自动分析脚本
- 获取view的y坐标