版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
UiAutomator自動化測試1UI自動化測試框架介紹測試框架介紹優(yōu)缺點Monkeyrunner語言:python運行環(huán)境:python環(huán)境,pc連接設備后adb運行腳本文件測試對象:UI測試優(yōu)點:操作簡單,可以錄制測試腳本缺點:主要使用坐標,移植性不強,業(yè)務邏輯判斷較差Instrumentation語言: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連接設備后adb運行腳本文件或直接通過eclipse運行測試對象:UI測試優(yōu)點:1、簡單易學,可模擬大部分手工操作2、無Activity限制,無需簽名,無需root權(quán)限3、基于應用UI元素控制,靈活精確缺點:1、無法配合OpenGL和HTML5應用使用,因為這些應用沒有AndroidUI組件2UiAutomator簡介UiAutomator是google在安卓4.1版本推出的一套基于UI控件的自動化測試框架,可模擬人對手機的操作,主要用于UI自動化測試。由下面兩套工具組成:Uiautomatorviewer:掃描、分析待測應用的UI組件的圖像工具(路徑:sdk安裝文件夾\tools\uiautomatorviewer.bat)。Uiautomator:包含功能界面測試API和自動化運行測試用例的引擎的JAVA類庫。3UiAutomator框架UiDevice代表設備狀態(tài),可以通過UiDevice來檢測設備的各種屬性如當前屏幕尺寸,同時也可以進行設備級別相關(guān)操作:按鈕、拖拽、轉(zhuǎn)換屏幕轉(zhuǎn)向UiSelector代表UI控件搜索的條件,基于對元素描述的各種屬性,可以獲得該元素控件從而進行相關(guān)操作UiObject代表一個UI控件,通過UiSelector來查找UiObjectUiCollection代表控件的集合,通過UiSelector選取符合條件的元素集合,通常用于遍歷UiScrollable代表可滾動控件,模擬水平或者垂直滾動的UI元素,當元素在屏幕外需要滾動屏幕才能看到的情況下需要使用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)的設備信息、系統(tǒng)按鍵、全局操作等1、獲取坐標參數(shù)UiDevice.getInstance().getDisplayHeight()/getDisplayWidth()獲取屏幕高度/寬度2、獲取信息信息,包括屏幕分辨率、亮滅屏狀態(tài)等UiDevice.getInstance().getCurrentActivityName()獲取當前界面Activity3、滑動、拖拽操作UiDevice.getInstance().drag(startX,startY,endX,endY,steps)
拖拽坐標處對象到另一個坐標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定位這種方式適用于當前頁面上只有一種類型的組件的情況,例如只有一個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")));//在當前界面中查找第一個ListView中的帶有文本屬性為Apps的子控件。5.4UiAutomator對象之UIObjectUIObject是UiAutomator的核心屬性之一。它代表了整個UI界面中的所有對象元素。功能包括:獲取UI元素,點擊、拖拽、滑動、對象屬性判斷、手勢等。1、通過UiSelector對象獲取對象元素UiObjectobject1=newUiObject(newUiSelector().text("聯(lián)系人"))2、點擊移動操作click()/longClick()點擊對象/長按對象dragTo(destObj,steps)以steps拖動對象到destObj(目標位置)3、文本輸入與清除setText(text)/clearTextField()設置內(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í)行過程中遇到非預想的步驟,比如測試過程中手機系統(tǒng)自動彈出一個提示框等。1、中斷監(jiān)聽檢查條件PublicbooleancheckForCondition();在測試框架無法找到一個匹配時,使用uiselector測試框架將自動調(diào)用此程序。在超時未找到匹配項時,調(diào)用checkForCondition()方法查找設備上的所有已注冊監(jiān)聽器條件,以此來處理中斷問題保證測試用例正常運行。2、監(jiān)聽器VoidregisterWatcher(Stringname,UiWatcherwatcher)
注冊一個監(jiān)聽器,通過checkForCondition檢查,當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對應的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運行步驟較繁瑣,可使用腳本將重復的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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 演出用肥皂泡和泡沫發(fā)生器項目評價分析報告
- 烹飪烤箱相關(guān)項目實施方案
- 海洋美術(shù)課程設計
- 皮帶服飾用市場環(huán)境與對策分析
- 2024廢棄土地轉(zhuǎn)包合同樣本
- 電慢燉鍋項目可行性實施報告
- 毛線衫相關(guān)項目實施方案
- 激光干涉儀課程設計
- 2024年建筑行業(yè)勞務清包協(xié)議模板版
- 2024年度標準場地租賃協(xié)議75829號一
- 殯葬領域突出問題專項整治工作實施方案
- 心包積液護理查房
- 充電樁維保合同書樣本
- 有機肥料投標方案(技術(shù)標)
- 制冷考試題試卷
- 預埋件制作檢驗批質(zhì)量驗收記錄
- 校園網(wǎng)絡工程方案設計
- 工商銀行申請表
- 河南省湘豫名校聯(lián)考2023-2024學年高三上學期11月期中考試英語試題【含答案解析】
- 員工自駕出行免責聲明書范本
- 生物炭及生物炭基肥在農(nóng)業(yè)中的應用研究進展
評論
0/150
提交評論