自動化測試培訓(xùn)android monkeyrunner_第1頁
自動化測試培訓(xùn)android monkeyrunner_第2頁
自動化測試培訓(xùn)android monkeyrunner_第3頁
自動化測試培訓(xùn)android monkeyrunner_第4頁
自動化測試培訓(xùn)android monkeyrunner_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

Android自動化測試分享(二)2014-8-10一、常用android工具簡介常用android自動化測試工具1、Monkey2、MonkeyRunner3、Robotium

,Uiautomator操作簡單,隨機性強需要了解Python需要了解java其它第三方商用工4、ITestin

,DroidPilot,smartrobot,AndroidRobot以及一些具自動化工具名稱MonkeyMonkeyRunnerandroid的Junit測試框架RobotiumUiautomator入門難度一般困難非常簡單功能方面很一般無所不能基本滿足一、什么是MonkeyrunnerMonkeyrunner是Android系統(tǒng)自帶的四大自動化測試工具之一,

Monkeyrunner需要通過Android-SDK運行,支持用Python編寫腳本,按照測試腳本去執(zhí)行預(yù)先定義好的操作事件。Monkeyruner腳本可以支持安裝卸載應(yīng)用、進入任一。模塊、點坐標(biāo)事件、按鍵事件、編輯文本、循環(huán)測試、截圖對比等操作,使用起來比較靈活,難點:需要了解Python語言二、Mmonkeyrunner工具同Monkey工具的差別Monkey工具直接運行在設(shè)備或模擬器的adb

shell中,生成用戶或系統(tǒng)的偽隨機事件流。monkeyrunner工具則是在工作站上通過API定義的特定命令和事件控制設(shè)備或模擬器。Monkeyruner

簡介1.下載Python編譯器安裝。地址:下載python編輯器后可以用IDLE打開python腳本并調(diào)試編譯。2.Eclipse+python開發(fā)環(huán)境配置網(wǎng)上環(huán)境配置教程:Monkeyrunner環(huán)境搭建Python基本語法輸出語句:print

"abc"控制語句:a.if語句b.while語句c.for

循環(huán)for..in。Monkeyrunner常用類簡介1、MonkeyRunner

:一個為monkeyrunner程序提供工具方法的類。這個類提供了用于連接monkeyrunner至設(shè)備或模擬器的方法。它還提供了用于創(chuàng)建一個monkeyrunner程序的用戶界面以及顯示內(nèi)置幫助的方法。2、MonkeyDevice

:表示一個設(shè)備或模擬器。這個類提供了安裝和卸載程序包、啟動一個活動以及發(fā)送鍵盤或觸摸事件到應(yīng)用程序的方法。您也可以用這個類來運行測試包。3、MonkeyImage

:表示一個截圖對象。這個類提供了截圖、將位圖轉(zhuǎn)換成各種格式、比較兩個MonkeyImage對象以及寫圖像到文件的方法。導(dǎo)入包:from

com.android.monkeyrunner

import

MonkeyRunner

asmr,MonkeyDevice

as

md,MonkeyImage

as

mi命令行執(zhí)行腳本手連接電腦,開啟調(diào)試模式。將cmd命令定位到android

SDK的路徑下的tools目錄(如配置環(huán)境變量則無需此步驟)輸入命令“monkeyrunner”,回車,進入Shell命令交互方式

A.導(dǎo)入monkeyrunner所要使用的模塊:from

com.android.monkeyrunner

import

MonkeyRunner,MonkeyDevice,MonkeyImageB.輸入device=MonkeyRunner.waitForConnection(),然后回車說明:這步操作是和你手機進行勾兌(連接)。輸入具體事件進行控制;如:觸擊屏幕:device.touch(94,34,'DOWN_AND_UP')這樣麻煩的一行行的輸入命令,可以將這些指令都寫到一個Python文件中,所以繼續(xù)看下面的一些優(yōu)化操作。編寫腳本#設(shè)置編碼方式

#coding=utf-8#導(dǎo)入此程序所需的monkeyrunner模塊from

com.android.monkeyrunner

import

MonkeyRunner,MonkeyDevice#連接當(dāng)前設(shè)備,返回一個MonkeyDevice對象device

=

MonkeyRunner.waitForConnection()#安裝Android包,注意,此方法返回的返回值為boolean,由此您可以判斷安裝過程是否正常device.installPackage(‘myproject/bin/MyApplication.apk’)#運行此應(yīng)用中的一個活動device.startActivity(component=‘com.example.android.myapplication.MainActivity’)#按下菜單按鍵device.press(‘KEYCODE_MENU’,‘DOWN_AND_UP’)#

截取屏幕截圖

通宵用來判斷當(dāng)前執(zhí)行結(jié)果是否正確。result=device.takeSnapShot#對比A,B兩張圖片相似度是否接近90%返回ture

或falsecompare=ImageA.sameAs(ImageB,0.9)#將截圖保存至文件result.writeToFile('myproject/shot1.png','png')將內(nèi)容保存至如Mytest.py文件中運行腳本1、運行Python腳本直接在命令行下輸入monkeyrunner+Python腳本路徑(注意:配置好SDK的環(huán)境變量)導(dǎo)入包import

sysimport

os如:sys.exit如:adb命令的執(zhí)行:os.system()例如adb

root,adb

push,

adb

pull,可以用os.system()來實現(xiàn),例如os.system("adb

push

e:\\tmp\\email_eception.log

/sdcard/")目錄操作:os.chdir(),os.getcwd()os.chdir('e:\\tmp')os.getcwd()創(chuàng)建以時間命名的文件夾首先獲取時間:time.ctime(),獲得的時間格式如"MonOct3115:48:30

2011",因為window不支持文件夾名包括“:”,并且?guī)в锌崭褚矔砑嫒菪缘膯栴},可以用字符串處理函數(shù)str.replace來將空格用“_”替換,將“:”刪除,st2.replace("","_").replace(":","")判斷文件是否存在os.path.exists(),返回True

或Falseos.path.exists("D:\\shellwork\\devtool\\setup\\music\\setup.bat")連接之前要確保是以root身份連接的(adb

root)os.system('adb

root')os.system('adb

wait-for-device')import time

如:result.writeToFile(‘D:/screenshot/'+time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))+'

shot.png','png')Monkeyrunner詳細(xì)用法暫停目前正在運行的程序指定的秒數(shù)(一般用于等待程序處理時間,界面加載等)MonkeyRunner.sleep(秒數(shù),浮點數(shù))獲取設(shè)備的屏蔽緩沖區(qū),產(chǎn)生了整個顯示器的屏蔽捕獲。(截圖)result=device.takeSnapshot()返回一個MonkeyImage對象(點陣圖包裝),我們可以用以下命令將圖保存到文件result.writeToFile('takeSnapshot\\result1.png','png')寫文件

MonkeyImageMonkeyImage.writeToFile(參數(shù)1:輸出文件名,也可以包括路徑,參數(shù)2:目標(biāo)格式)寫成功返回true,否則返回false鍵盤上的類型指定的字符串,這相當(dāng)于要求每個字符串中的字符按(鍵碼,DOWN_AND_UP).字符串發(fā)送到鍵盤device.type('字符串')喚醒設(shè)備屏幕(在設(shè)備屏幕上喚醒)device.wake()重新引導(dǎo)到指定的引導(dǎo)程序指定的設(shè)備device.reboot()在指定位置發(fā)送觸摸事件(x,y的單位為像素)device.touch(x,y,TouchPressType-觸摸事件類型)Monkeyrunner詳細(xì)用法發(fā)送到指定鍵的一個關(guān)鍵事件device.press(參數(shù)1:鍵碼,參數(shù)2:觸摸事件類型)參數(shù)1:見android.view.KeyEvent參數(shù)2,如有TouchPressType()返回的類型-觸摸事件類型,有三種。1、DOWN發(fā)送一個DOWN事件。指定DOWN事件類型發(fā)送到設(shè)備,對應(yīng)的按一個鍵或觸摸屏幕上。2、UP

發(fā)送一個UP事件。指定UP事件類型發(fā)送到設(shè)備,對應(yīng)釋放一個鍵或從屏幕上抬起。3、DOWN_AND_UP

發(fā)送一個DOWN事件,然后一個UP事件。對應(yīng)于輸入鍵或點擊屏幕。按下HOME鍵:device.press(‘KEYCODE_HOME’,MonkeyDevice.DOWN_AND_UP)按下BACK鍵:

device.press(‘KEYCODE_BACK’,MonkeyDevice.DOWN_AND_UP)按下下導(dǎo)航鍵:device.press(‘KEYCODE_DPAD_DOWN’,MonkeyDevice.DOWN_AND_UP)按下上導(dǎo)航鍵:device.press(‘KEYCODE_DPAD_UP’,MonkeyDevice.DOWN_AND_UP)按下OK鍵

device.press(‘KEYCODE_DPAD_CENTER’,MonkeyDevice.DOWN_AND_UP)按下回車鍵:

device.press(‘KEYCODE_ENTER’,MonkeyDevice.DOWN_AND_UP)#輸入回車按下返回鍵:

device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)#點擊返回常用按鍵(參數(shù)一的值):menu鍵:

KEYCODE_MENUhome鍵:

KEYCODE_HOMEback鍵

KEYCODE_BACKsend鍵:

KEYCODE_CALLend鍵:

KEYCODE_ENDCALL上導(dǎo)航鍵:KEYCODE_DPAD_UP下導(dǎo)航鍵:KEYCODE_DPAD_DOWN左導(dǎo)航:右導(dǎo)航鍵:ok鍵:上音量鍵:下音量鍵:KEYCODE_DPAD_LEFTKEYCODE_DPAD_RIGHTKEYCODE_DPAD_CENTERKEYCODE_VOLUME_UPKEYCODE_VOLUME_DOWNpower鍵:

KEYCODE_POWERcamera鍵:KEYCODE_CAMERA更多按鍵詳見:常用按鍵EasyMonkeyDevice使用主要功能:可以通過ID查找、操作控件,也可以查看控件屬性。#導(dǎo)入要用到的代碼庫from

com.android.monkeyrunner

import

MonkeyRunner,MonkeyDevicefrom

com.android.monkeyrunner

import

MonkeyImagefrom

com.android.monkeyrunner.easy

import

EasyMonkeyDevicefrom

com.android.monkeyrunner.easy

import

HierarchyViewerfrom

com.android.monkeyrunner.easy

import

Byfrom

com.android.hierarchyviewerlib.device

import

ViewNode#初始化MonkeyDevice,device類型是MonkeyDevicedevice

=

MonkeyRunner.waitForConnection()#初始化EasyMonkeyDevice,easy_device的類型是EasyMonkeyDevice#在android

2.3.3中,加入了新的API,即EasyMonkeyDeviceeasy_device

=

EasyMonkeyDevice(device)print

'start

Contacts'#啟動Contacts

應(yīng)用#啟動方法使用了adb

shell中的am命令,關(guān)于am命令的使用,可以在啟動adb

shell后,鍵入am回車,里面有device.shell('am

start-a

ent.action.MAIN-ncom.android.contacts

/.DialtactsContactsEntryActivity')#AM

命令例子詳見:EasyMonkeyDevice使用#如果聯(lián)系人為空,就會出現(xiàn)"you

don't

have

any..."的界面,其中顯示文字的控件

(TextView)的id為"emptyText"#這里我們檢查一下,這個TextView控件是否可見,這個函數(shù)是EasyMonkeyDevice類提供的功能text=easy_device.visible(By.id('id/emptyText'))

#這步操作耗時較長,因為按id查找控件需要時間較長printtext #如果可見,將打印出True#通過MonkeyDevice獲取HierarchyViewer對象實例hierarchy_viewer

=

device.getHierarchyViewer()#通過HierarchyViewer獲取ViewNode實例(一個viewnode實例代表一個控件)view_node

=

hierarchy_viewer.findView(By.id('id/emptyText'))#獲取控件內(nèi)的文本text=view_dProperties.get('mText').toString()if

text.find('have

any')

<

0:print

'not

find

haveany!'else:print

'find

have

any!'printtextHierarchyviewer

UI查看工具路徑:位于SDK tools

目錄下的

hierarchyviewer.bat主要功能

1、查看UI布局

。2、查看控件屬性。(如控件的ID,控件的長,寬,高)Monkeyrunner(錄制回放)1.在tools

目錄下有個monkey_recorder.py腳本,通過monkeyrunner+空格+腳本路徑可以啟動MonkeyRecorder錄制腳本Monkeyrunner(錄制回放)1、連接機器。下載monkey_playback.py和monkey_recorder.py兩個文件,保存在配置的tools目錄下。2.通過使用monkerunner +

monkey_recorder.py文件路徑

啟動錄制界面3、在跳出的頁面中進行測試操作,,右側(cè)顯示出操作腳本。(注意添加操作時間)4、點擊最上面的“ExportActions”,將腳本導(dǎo)出,存放在D:\test1.mr(路徑隨便,后綴名.mr需要自己去改)7、在cmd中monkeyrunner+monkey_recorder.py

文件路徑+D:\test1.mr

(剛保存錄制文件路徑)8、進行回放,可在手機端看到自己剛才的操作。舉例以下一個例子是進入設(shè)置,點擊wifi,然后點擊wifi開關(guān)的腳本。將下面代碼保存為py格式的文件,然通過過命令行monkeyrunner+保存文件的絕對路徑就可以行運腳本。#coding=utf-8import

sys#導(dǎo)入系統(tǒng)包from

com.android.monkeyrunnerimport

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論