Monkey詳解(指令碼篇 獲取座標)

2021-08-07 09:01:00 字數 3636 閱讀 2671

座標是monkey指令碼的核心。monkey提供了選取控制項的api,而座標是api input param的必要引數。那麼如何獲取控制項的座標呢?

同款機型,不同解析度下的絕對座標相同。但不同解析度下,相對座標不同。需要兩個步驟。

在shell 中使用getevent(大小寫敏感),獲取當前event。

c:\users\***x>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的值很多,我們這裡只需要記住乙個。

0003—>絕對座標。

另外,買一贈三

0000—>同步事件。代表某一操作的完成。

0001—>key_broad。

0002—>相對座標。

不同的code有不同的type。下面我們來看絕對座標的type。

當然,我們也只關注兩個值。

0035—>絕對座標x

0036—>絕對座標y

例子中的值x,y分別為0x1ef,0x3fe。轉換為十進位制為495,1022。

目的達到,ctrl+c,結束getevent。

轉換需要五個引數,即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

\***x>adb shell wm size

physical size: 1080x1920

剩下的就是計算了。

Monkey工具指令碼功能詳解

monkey指令碼 adb shell monkey f 1 參考原始碼 monkey指令碼主要命令 dispatchpointer 相當於把手按在某乙個點上面 dispatchpress keycode 向系統傳送固定的按鍵 keycode 事件 android keycode鍵值對應大全 lau...

Nmap高階使用(指令碼篇)

先用以下命名掃瞄目標機器或者目標c段都跑了什麼服務 也可以用下面的指令碼先嘗試獲取下目標機器更詳細的服務banner資訊 nmap st pn open v banner.nse 192.168.3.23 ftp anon.nse 檢查目標ftp是否允許匿名登入,光能登陸還不夠,它還會自動檢測目錄是...

loadrunder之指令碼篇 action分類

action分類 l vuser init 2.vuser end 3.action 在lr中使用者的初始化操作應該存放在vuser init中。使用者的結束操作存放在vuser end中。因為這兩個action在後面的run logic預設設定中是處在指令碼最先執行和最後執行的位置,並且負載時,不...