UiAutomator自動化測試分析_第1頁
UiAutomator自動化測試分析_第2頁
UiAutomator自動化測試分析_第3頁
UiAutomator自動化測試分析_第4頁
UiAutomator自動化測試分析_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

UiAutomator自動化測試1UI自動化測試框架介紹測試框架介紹優(yōu)缺點Monkeyrunner語言:python運行環(huán)境:python環(huán)境,pc連接設(shè)備后adb運行腳本文件測試對象:UI測試優(yōu)點:操作簡單,可以錄制測試腳本缺點:主要使用坐標(biāo),移植性不強,業(yè)務(wù)邏輯判斷較差I(lǐng)nstrumentation語言:java運行環(huán)境:adb命令啟動或者手機中直接啟動測試對象:白盒測試、UI測試1、針對單個apk測試2、需要源碼,需要對apk重新簽名3、需要root權(quán)限Robotium語言:java,基于Instrumentation的封裝運行環(huán)境:同Instrumentation測試對象:同Instrumentation同InstrumentationUiAutomator語言:java運行環(huán)境:pc連接設(shè)備后adb運行腳本文件或直接通過eclipse運行測試對象:UI測試優(yōu)點:1、簡單易學(xué),可模擬大部分手工操作2、無Activity限制,無需簽名,無需root權(quán)限3、基于應(yīng)用UI元素控制,靈活精確缺點:1、無法配合OpenGL和HTML5應(yīng)用使用,因為這些應(yīng)用沒有AndroidUI組件2UiAutomator簡介UiAutomator是google在安卓4.1版本推出的一套基于UI控件的自動化測試框架,可模擬人對手機的操作,主要用于UI自動化測試。由下面兩套工具組成:Uiautomatorviewer:掃描、分析待測應(yīng)用的UI組件的圖像工具(路徑:sdk安裝文件夾\tools\uiautomatorviewer.bat)。Uiautomator:包含功能界面測試API和自動化運行測試用例的引擎的JAVA類庫。3UiAutomator框架UiDevice代表設(shè)備狀態(tài),可以通過UiDevice來檢測設(shè)備的各種屬性如當(dāng)前屏幕尺寸,同時也可以進行設(shè)備級別相關(guān)操作:按鈕、拖拽、轉(zhuǎn)換屏幕轉(zhuǎn)向UiSelector代表UI控件搜索的條件,基于對元素描述的各種屬性,可以獲得該元素控件從而進行相關(guān)操作UiObject代表一個UI控件,通過UiSelector來查找UiObjectUiCollection代表控件的集合,通過UiSelector選取符合條件的元素集合,通常用于遍歷UiScrollable代表可滾動控件,模擬水平或者垂直滾動的UI元素,當(dāng)元素在屏幕外需要滾動屏幕才能看到的情況下需要使用UiScrollable4UiAutomator環(huán)境搭建開發(fā)工具:eclipse

開發(fā)環(huán)境:JDK1.6以上編譯環(huán)境:AndroidSDK、Ant(基于Java的構(gòu)建工具,用于編譯uiatutomator測試工程,自動完成所有的構(gòu)建過程)5.1UiAutomator對象之UiDevice通常用于獲取系統(tǒng)的設(shè)備信息、系統(tǒng)按鍵、全局操作等1、獲取坐標(biāo)參數(shù)UiDevice.getInstance().getDisplayHeight()/getDisplayWidth()獲取屏幕高度/寬度2、獲取信息信息,包括屏幕分辨率、亮滅屏狀態(tài)等UiDevice.getInstance().getCurrentActivityName()獲取當(dāng)前界面Activity3、滑動、拖拽操作UiDevice.getInstance().drag(startX,startY,endX,endY,steps)

拖拽坐標(biāo)處對象到另一個坐標(biāo)4、輸入按鍵UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_A)5、系統(tǒng)按鍵UiDevice.getInstance().wakeUp()/sleep()按電源鍵亮屏/滅屏

5.2UiAutomator對象之UiSelector(1)通常使用UiSelector,通過各種屬性節(jié)點和關(guān)系來定位組件。通過uiautomatorviewer,我們可以找到很多對象的屬性,可以通過這些屬性來定位需要的元素對象5.3UiAutomator對象之UiSelector(2)1、通過text、description屬性定位UiSelector().text(text)//通過text完全定位UiSelector().description(description)//通過description完全定位2、通過resourceId定位UiSelector().resourceId(id)//通過resourceId定位3、通過class、package定位這種方式適用于當(dāng)前頁面上只有一種類型的組件的情況,例如只有一個ListViewUiSelector().className(className)/packageName(name)4、通過index、instance定位UiSelector().index(index)/instance(instance)5、使用childSelector()函數(shù)來嵌套UiSelector對象UiObjectappItem=newUiObject(newUiSelector().className("android.widget.ListView").instance(1).childSelector(newUiSelector().text("Apps")));//在當(dāng)前界面中查找第一個ListView中的帶有文本屬性為Apps的子控件。5.4UiAutomator對象之UIObjectUIObject是UiAutomator的核心屬性之一。它代表了整個UI界面中的所有對象元素。功能包括:獲取UI元素,點擊、拖拽、滑動、對象屬性判斷、手勢等。1、通過UiSelector對象獲取對象元素UiObjectobject1=newUiObject(newUiSelector().text("聯(lián)系人"))2、點擊移動操作click()/longClick()點擊對象/長按對象dragTo(destObj,steps)以steps拖動對象到destObj(目標(biāo)位置)3、文本輸入與清除setText(text)/clearTextField()設(shè)置內(nèi)容為text/清除文本4、獲取對象狀態(tài)exists()/waitForExists(timeout)對象是否存在/等待對象出現(xiàn)5、手勢pinchIn(percent,steps)/pinchOut(percent,steps)雙指向內(nèi)收縮/雙指向外張開5.5UiAutomator對象之UiCollection通常用于獲取滿足某種搜索條件的組件集合,通過鏈式搜索確定最終需要的組件。UiCollection是Uiobject的子類。搜索時先按照一定的條件枚舉容器類界面所有符合條件的子元素。再從符合條件的元素中通過一定的條件進一步定位到需要的元素。一般使用容器類組件作為父類,用于尋找不好定位的子元素。PublicUiobjectgetchildByDescription(UiSelectorchildPattern,Stringtext)PublicUiobjectgetchildByText(UiSelectorchildPattern,Stringtext)PublicUiobjectgetchildByInstance(UiSelectorchildPattern,intinstance)UiCollectioncollection=newUiCollection(newUiSelector().className("android.widget.ListView"))UiSelectorchildPattern=newUiSelector().className("android.widget.TextView")UiObjectmusic=collection.getChildByText(childPattern,"Music";)5.6UiAutomator對象之UiScrollable可以用UiScrollable來模擬水平或者垂直滾動的UI元素。如果需要操作的元素在屏幕外需要滾動屏幕才能看到的情況下需要使用UiScrollable。例如,下面的代碼顯示了如何模擬滾動到“Settings”菜單并點擊“Abouttablet”菜單的操作:UiScrollablesettingsItem=newUiScrollable(newUiSelector().className("android.widget.ListView"));UiObjectabout=settingsItem.getChildByText(newUiSelector().className("android.widget.LinearLayout"),"Abouttablet");about.click()5.7UiAutomator對象之UiWatcherUiWatcher用戶處理腳本執(zhí)行過程中遇到非預(yù)想的步驟,比如測試過程中手機系統(tǒng)自動彈出一個提示框等。1、中斷監(jiān)聽檢查條件PublicbooleancheckForCondition();在測試框架無法找到一個匹配時,使用uiselector測試框架將自動調(diào)用此程序。在超時未找到匹配項時,調(diào)用checkForCondition()方法查找設(shè)備上的所有已注冊監(jiān)聽器條件,以此來處理中斷問題保證測試用例正常運行。2、監(jiān)聽器VoidregisterWatcher(Stringname,UiWatcherwatcher)

注冊一個監(jiān)聽器,通過checkForCondition檢查,當(dāng)UiSelector無法匹配到對象時,觸發(fā)監(jiān)聽器6UiAutomator運行1、編寫測試用例UiAutomator中的測試類都要繼承UiAutomatorTestCase,每個測試用例的方法的方法名都要以test開頭2、創(chuàng)建build文件androidcreateuitest-project-n<prjname>-t<android-sdk-ID>-p<workspacepath>-n

為工程名-p

為工程路徑-t

為所使用的SDK的id(命令行運行Androidlist,查看需要編譯的apilevel對應(yīng)的id即可)3、修改build文件打開工程目錄,找到build.xml文件,將第2行的help修改為build4、開始編譯,使用ant,通過build.xml打包生成jarant-buildfile<build.xml文件路徑>5、pushjar包到手機adbpush<project.jar>/data/local/tmp/6、運行測試adbshelluiatumatorruntest<project.jar>-c<包名>.<類名>[#testname]7UiAutomator快速運行上一章節(jié),UiAutomator運行步驟較繁瑣,可使用腳本將重復(fù)的2~6步驟封裝起來。使用已有的腳本工具uiautomatorhelper,自動執(zhí)行從創(chuàng)建build文件到運行腳本的一系列動作,之后在Eclipese上可直接運行調(diào)試腳本。Publicstaticvoidmain(String[]args){StringjarName=“Vinsoncontrol”;StringtestClass=“com.androidcontrol.Test_recovery_reconnect”;StringtestName=“test_recovery_reconnect”;StringandroidId=“1”;newUiAutomatorHelper(jarName,testClass,testName,androidId);}8腳本穩(wěn)定性建議1、少用Sleep等待

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論