編輯:關於Android編程
Android自動化測試有很多方式,常見的包括MonkeyRunner,Robotium,SL4A,Java Instrumentation,Shell腳本等(隨機點擊的Monkey測試太過低級不在此列)。因測試需要,便在網上百度一下Android自動化測試腳本編寫,自己動手完成Shell腳本,來通過腳本自動化測試一些需要的操作,有時候是非常的實用!
手機上有很多輸入設備,這些設備的編號每個手機都不同,因此我們需要首先了解這個手機上都有哪些輸入設備,然後通過腳本操作這些輸入設備,實現一些想要的操作,進而通過循環實現自動化測試。
> adb shell cat /proc/bus/input/devices
這條命令就是顯示系統的輸入設備列表,自己需要去了解這些設備的含義,進而去操作這些設備!
選擇一個合適的設備來進行我們的輸入測試,對於大多數情況來說,一般只需要用到鍵盤和屏幕觸摸輸入,下面我們以屏幕觸摸輸入為例。將用到兩個對應的命令:getevent和sendevent,顧名思義,一個是獲取事件,另一個則是發送模擬事件。
用getevent了解設備運作
首先我們隨便執行一條getevent來監聽Handler event0(event0為屏幕事件):
> adb shell getevent /dev/input/event0
滑動解鎖便會輸出這些event消息
但這些type和code究竟是什麼意思呢?輸入以下指令
> adb shell getevent -p/dev/input/event0
了解這些event的含義,你才能寫出自己想要實現操作的腳本!
有了以上知識作為基礎,我們就可以開始著手編寫我們自己的自動化測試腳本了
使用sendevent模擬事件
先看看sendevent的使用方法:
> adb shell sendevent –h
use: sendevent device type code value
先做個簡單的測試,我們回到桌面准備模擬一遍剛才點擊的動作,如果成功的話會進入剛剛那個app。利用sendevent編寫模擬事件腳本lock_test.sh:
#!/bin/bash ###@fantasyhujian### num=1 while true do adb shell sendevent /dev/input/event1 1$((0x14a)) $((0x01)) adb shell sendevent /dev/input/event1 3$((0x30)) $((0xc8)) adb shell sendevent /dev/input/event1 3$((0x35)) $((0x186)) adb shell sendevent /dev/input/event1 3$((0x36)) $((0x1d1)) adb shell sendevent /dev/input/event1 3$((0x32)) $((0x01)) adb shell sendevent /dev/input/event1 0$((0x02)) $((0x00)) adb shell sendevent /dev/input/event1 0$((0x00)) $((0x00)) ##/***點擊屏幕的解鎖開始位置***/## adb shell sendevent /dev/input/event1 3$((0x30)) $((0xc8)) adb shell sendevent /dev/input/event1 3$((0x35)) $((0x186)) adb shell sendevent /dev/input/event1 3$((0x36)) $((0x31d)) adb shell sendevent /dev/input/event1 3$((0x32)) $((0x01)) ##/***下拉滑動解鎖***/## adb shell sendevent /dev/input/event1 0$((0x02)) $((0x00)) adb shell sendevent /dev/input/event1 0$((0x00)) $((0x00)) adb shell sendevent /dev/input/event1 3$((0x30)) $((0x00)) adb shell sendevent /dev/input/event1 1$((0x14a)) $((0x00)) adb shell sendevent /dev/input/event1 0$((0x00)) $((0x00)) ##/***離開觸屏,完成解鎖***/## sleep 2 adb shell sendevent /dev/input/event0 1$((0x74)) $((0x01)) adb shell sendevent /dev/input/event0 0$((0x00)) $((0x00)) adb shell sendevent /dev/input/event0 1$((0x74)) $((0x00)) adb shell sendevent /dev/input/event0 0$((0x00)) $((0x00)) ##/***模擬按鍵鎖屏,然後按開機鍵亮屏***/## sleep 2 num=$(($num+1)) echo $num done ##/***循環計數***/##
以上腳本實現自動化滑動解鎖,並完成計數!
執行腳本,便可完成自動化滑動解鎖測試!
這樣我們成功的實現了一個滑動解鎖測試,如果想模擬其他的動作,可以嘗試自己動手觀察一下設備接收到的事件,再通過腳本實現出來就行!
Android底層開發之耳機插拔與音頻通道切換實例 由於使用的是耳機 麥克分離式的耳機,所以要分別上報事件。在Android系統層耳機插孔的檢測是基於/
紅米手機官方微博正式公布了7月27日新品發布會主角之一——紅米Pro。除此之外,還有一款神秘新品露面,不出意外的話,應該就是小米筆記
由於Worker線程不能修改UI,所以當在Worker線程中接收到消息之後,需要通知主線程來更新UI。下面是一個下例子: 一 布局 二 代碼&
概述本篇是繼上一篇Android 源碼解析View的touch事件分發機制之後的,關於ViewGroup事件分發機制的學習。同樣的,將采用案例結合源碼的方式來進行分析。前