iOS自動化四

本文章轉(zhuǎn)載于搜狗測試

成長路上的最后一篇,讓我們來了解一下蘋果官方推薦的自動化框架UIAutomation。

UI Automation

腳本錄制

將iPhone連接MAC電腦;

打開Xcode7中的Instruments:Xcode –> Open Developer Tool-Instruments;

在Instruments界面選中Automation,然后點(diǎn)擊Choose(或者雙擊Automation)進(jìn)入Automation界面;

在Automation界面choose Target選擇iPhone5真機(jī)和該真機(jī)上待測的目標(biāo)應(yīng)用。(應(yīng)用必須是從本機(jī)中build到真機(jī)中的debug版本,有開發(fā)者簽名,否則無法使用Automation);

創(chuàng)建測試腳本:在Scripts下的點(diǎn)擊Add按鈕,選擇Create,即可自動創(chuàng)建automation測試腳本(即JavaScript腳本) 。

錄制腳本:點(diǎn)擊下圖中的紅色按鍵,便可以開始錄制腳本。

錄制腳本雖然方便,但這種腳本是非常不健壯的,也沒有結(jié)果的判斷或是LOG的輸出的部分。所以我們經(jīng)常都還需要手動去編碼。

獲取控件

首先看看這個程序:

那么UI Automation中有個接口logElementTree()能把這個APP的控件樹給打印出來,如下:

UIATarget:你可以把它理解成你的設(shè)備

想獲得上圖中的UIATarget:

UIATarget.localTarget();

想獲得上圖中的UIAWindow:

UIATarget.localTarget().frontMostApp().mainWindow();

可以這樣:

UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0];

這時各位可能就會問了我不能老用順序來找我需要的對象很多時候他的順序是不定的。于是還有這樣的方式:

UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0].elements()[“”];

可以通過element的name屬性來找到它。每個element一共有4種屬性:

(1)name:控件的name和accessibility label一致(但如果沒有設(shè)置accessibility label的話,就無法訪問了)

(2)value:目前的值

(3)elements:子節(jié)點(diǎn)們

(4)parent:父節(jié)點(diǎn)

執(zhí)行操作

(1)點(diǎn)擊:

appWindow.tabBar().buttons()[“UnitConversion”].tap();

也可以看坐標(biāo)點(diǎn)來點(diǎn):

UIATarget.localTarget().tap({x:100,y:200});

(2)雙擊:

UIATarget.localTarget().doubleTap({x:100,y:200});

(3)縮放:

UIATarget.localTarget().pinchOpenFromToForDuration(({x:20,y:200},{x:300,y:200},2);

UIATarget.localTarget().pinchCloseFromToForDuration(({x:20,y:200},{x:300,y:200},2);

(4)滑動:

UIATarget.localTarget().dragFromToForDuration(({x:160,y:200},{x:160,y:400},1);

UIATarget.localTarget().flickFromTo(({x:160,y:200},{x:160,y:400});

(5)輸入:

UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0].setValue(recipeName);

驗(yàn)證機(jī)制

UIAutomation預(yù)設(shè)元素的isValid()方法來判斷是否成功(方法返回trueorfalse).像這樣:

if(cell.isValid()){

UIALogger.logPass(testName);

}

else{

UIALogger.logFail(testName);

}

執(zhí)行測試

(1) UI界面的方式,跟錄制方式類似,Import進(jìn)腳本后點(diǎn)執(zhí)行測試即可。

(2) 腳本運(yùn)行的方式:instruments -t xxx.tracetemplate -w DeviceID appName -e UIASCRIPT testScript.js 其中-t 后面的參數(shù)為 Automation.tracetemplate 的路徑

每個版本的位置都有所不同,在命令行下使用 instruments -s 命令進(jìn)行查詢

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容