用ADB命令寫Android自動(dòng)化測(cè)試腳本

之前有用過(guò)monkey進(jìn)行測(cè)試必尼,簡(jiǎn)單測(cè)試一下穩(wěn)定性浑劳;最近也簡(jiǎn)單了解了一下Espresso感覺還可以匙监,可以對(duì)UI進(jìn)行測(cè)試和校驗(yàn);最近發(fā)現(xiàn)自己根據(jù)adb命令來(lái)寫一下腳本來(lái)執(zhí)行自動(dòng)化測(cè)試也是不錯(cuò)的慰枕,比較有意思,主要是測(cè)試程序的穩(wěn)定性

腳本來(lái)執(zhí)行測(cè)試的優(yōu)缺點(diǎn)

  • 寫起來(lái)容易
  • 基本上可以實(shí)現(xiàn)90%以上的功能性覆蓋
  • 測(cè)試結(jié)果需要通過(guò)自己觀察整個(gè)過(guò)程和日志文件來(lái)得出的
  • 有些外部的動(dòng)作即纲,腳本是無(wú)法實(shí)現(xiàn)的具帮,比如需要錄入指紋
  • 只適配特定尺寸的設(shè)備
  • 沒法對(duì)內(nèi)容進(jìn)行校驗(yàn)
  • 執(zhí)行命令間隔時(shí)間要把控好

實(shí)現(xiàn)原理

Espresso比較起來(lái),其實(shí)原理是差不多的低斋,都是模擬輸入事件來(lái)操作程序蜂厅;腳本是用adb命令來(lái)實(shí)現(xiàn)點(diǎn)擊哪一個(gè)位置,位置需要自己測(cè)量膊畴,而Espresso的話就是通過(guò)寫代碼來(lái)獲取控件的位置來(lái)實(shí)現(xiàn)的掘猿,還可以添加一些對(duì)控件內(nèi)容的校驗(yàn);所以腳本不需要知道程序的代碼唇跨,只需要看見界面稠通,自己拿控件位置衬衬,就可以寫出測(cè)試腳本,而Espresso需要知道這個(gè)界面的具體組成部分改橘,拿到每個(gè)控件的ID滋尉,寫代碼獲取到控件,也自然可以對(duì)控件本身做一些校驗(yàn)

實(shí)現(xiàn)難度

腳本其實(shí)就只需要反復(fù)執(zhí)行那么幾個(gè)adb命令飞主,主要工作在于測(cè)量控件位置和命令的執(zhí)行順序兼砖,還是比較簡(jiǎn)單;Espresso其實(shí)也差不多既棺,也比較簡(jiǎn)單讽挟,但是寫測(cè)試代碼的人員肯定要能看懂Android代碼,根據(jù)代碼和流程寫測(cè)試代碼

屏幕適配

腳本可能還需要根據(jù)界面尺寸來(lái)做調(diào)整丸冕,其實(shí)就是多種尺寸需要寫多套腳本耽梅;Espresso肯定是不用的

測(cè)試過(guò)程

測(cè)試過(guò)程就是模擬輸入事件,所以哪里出了問(wèn)題胖烛,自己觀察整個(gè)過(guò)程是最好的眼姐,有錯(cuò)誤的話,也可以通過(guò)輸出錯(cuò)誤日志到文件佩番;其實(shí)感覺和Espresso也差不多

可玩性

寫寫腳本肯定是更有意思一點(diǎn)众旗,不僅僅是某個(gè)程序,所用應(yīng)用都可以寫出一些腳本來(lái)玩趟畏,執(zhí)行自動(dòng)化運(yùn)行贡歧;搭配上ADB網(wǎng)絡(luò)調(diào)試,不就可以忽悠一大堆小白赋秀,成為他們的黑客了

簡(jiǎn)單的運(yùn)用

比如在mac上利朵,寫一個(gè)解鎖的shell腳本,點(diǎn)亮程序解鎖猎莲;當(dāng)然解鎖密碼肯定要知道绍弟,或者圖案密碼,人臉著洼、虹膜樟遣、指紋肯定是不行的;

#!/bin/bash
adb shell svc power stayon true
sleep 0.2
adb shell input keyevent 82
sleep 0.2
adb shell input text 4444 && adb shell input keyevent 66
sleep 0.6

執(zhí)行腳本

sh test.sh

常用命令

打電話

adb shell am start -a android.intent.action.CALL -d tel:10086

打開QQ

adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity

打開微信

adb shell am start com.tencent.mm/com.tencent.mm.ui.LauncherUI

打開支付寶

adb shell am start com.eg.android.AlipayGphone/.AlipayLogin

殺死支付寶

adb shell am force-stop com.eg.android.AlipayGphone

關(guān)閉QQ

adb shell am force-stop com.tencent.mobileqq

點(diǎn)擊事件

adb shell input tap 500 500

home鍵

adb shell input keyevent 3

返回鍵

adb shell input keyevent 4

截圖(保存到SDCard)

adb shell /system/bin/screencap -p /sdcard/screenshot.png

從SD卡導(dǎo)出到電腦

adb pull /sdcard/screenshot.png /Users/dhht/Desktop

錄屏

adb shell screenrecord /sdcard/test.mp4
adb pull /sdcard/test.mp4 /Users/dhht/Desktop/test.mp4

亮屏

adb shell input keyevent 26

上下滑動(dòng)

adb shell input swipe 700 2000 700 1000

左右滑動(dòng)

adb shell input swipe 100 1000 1000 1000

解鎖

adb shell input keyevent 82

鎖定

adb shell input keyevent 26

輸入密碼身笤,并回車:

adb shell input text 123456 && adb shell input keyevent 66

屏幕長(zhǎng)亮

adb shell svc power stayon true      [true|false|usb|ac|wireless]

wifi設(shè)置界面

adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings
adb shell svc wifi enable  //打開wifi
adb shell svc wifi disable  //關(guān)閉wifi

藍(lán)牙

adb shell service call bluetooth_manager 6 //打開藍(lán)牙
adb shell service call bluetooth_manager 9 //關(guān)閉藍(lán)牙

關(guān)機(jī)重啟

adb reboot  //重啟
adb shell reboot  //重啟
adb shell reboot -p  //關(guān)機(jī)

打開網(wǎng)頁(yè)

adb shell am start -a android.intent.action.VIEW -d  http://google.com

卸載應(yīng)用

adb uninstall com.example.appname

屏幕相關(guān)

wm density
wm size
wm density 240

定位當(dāng)前頁(yè)面位置

adb shell dumpsys activity top

獲取屏幕分辨率

adb shell wm size

刪除屏幕鎖

adb shell rm /data/system/access_control.key 
adb shell rm /data/system/password.key 
adb shell rm /data/sysem/gesture.key 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末豹悬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子展鸡,更是在濱河造成了極大的恐慌屿衅,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莹弊,死亡現(xiàn)場(chǎng)離奇詭異涤久,居然都是意外死亡涡尘,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門响迂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)考抄,“玉大人,你說(shuō)我怎么就攤上這事蔗彤〈罚” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵然遏,是天一觀的道長(zhǎng)贫途。 經(jīng)常有香客問(wèn)我,道長(zhǎng)待侵,這世上最難降的妖魔是什么丢早? 我笑而不...
    開封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮秧倾,結(jié)果婚禮上怨酝,老公的妹妹穿的比我還像新娘。我一直安慰自己那先,他們只是感情好农猬,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著售淡,像睡著了一般斤葱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上勋又,一...
    開封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天苦掘,我揣著相機(jī)與錄音换帜,去河邊找鬼楔壤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛惯驼,可吹牛的內(nèi)容都是我干的蹲嚣。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼祟牲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼隙畜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起说贝,我...
    開封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤议惰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后乡恕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體言询,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俯萎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了运杭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夫啊。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖辆憔,靈堂內(nèi)的尸體忽然破棺而出撇眯,到底是詐尸還是另有隱情,我是刑警寧澤虱咧,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布熊榛,位于F島的核電站,受9級(jí)特大地震影響腕巡,放射性物質(zhì)發(fā)生泄漏来候。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一逸雹、第九天 我趴在偏房一處隱蔽的房頂上張望营搅。 院中可真熱鬧,春花似錦梆砸、人聲如沸转质。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)休蟹。三九已至,卻和暖如春日矫,著一層夾襖步出監(jiān)牢的瞬間赂弓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工哪轿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盈魁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓窃诉,卻偏偏與公主長(zhǎng)得像杨耙,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子飘痛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容