ios UI自動化測試學習筆記

1、一些注意事項:

1.作自動化測試時注意若是是真機話首先要設置不鎖屏。數組

2.自動化測試過程當中若是程序後臺或崩潰了。腳本運行將會暫停,直到程序再次回到前臺。app

3.必須明確指定關閉自動測試,測試完成或中斷都不會自動關閉測試。ide

4.測試也是根據視圖樹的元素位置獲取元素進行測試,根視圖元素是UIATarget。測試

2、部分功能說明:

1.獲取當前程序(在激活狀態):spa

UIATarget.localTarget().frontMostApp();

2.獲取目標程序的主Window:debug

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

3.獲取一個cell中的文本元素:日誌

UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0].elements()["Chocolate Cake"];

4.觸發一個導航欄中「Add」按鈕點擊:code

UIATarget.localTarget().frontMostApp().navigationBar().buttons()["Add"].tap();

5.觸發點擊屏幕上的某個位置:對象

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

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

6.獲取tabBar並點擊:blog

appWindow.tabBar().buttons()["Unit Conversion"].tap();

7.放大:

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

縮小(後面是個時間參數,表示持續時間):

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

8.拖拽和快速滑動:

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

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

9.爲文本框輸入內容:

var recipeName = "Unusually Long Name for a Recipe";
UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0].setValue(recipeName);

10.在tabBar中導航

var tabBar = UIATarget.localTarget().frontMostApp().mainWindow().tabBar();

 var selectedTabName = tabBar.selectedButton().name();

 if (selectedTabName != "Unit Conversion") { 

tabBar.buttons()["Unit Conversion"].tap();

}

11.tableview滾動到一個name以「Turtle Pie.」開頭的元素:

根據name模糊查詢控件,firstWithPredicate(「name beginswith ‘xxx’」),根據name徹底匹配,firstWithName(「xxxx」),/根據key值匹配,firstWithValueForKey(value,key)

UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].scrollToElementWithPredicate("name beginswith ‘Turtle Pie’");

不使用預測功能:scrollToElementWithName和scrollToElementWithValueForKey

12.增長時間控制:

//壓棧時間片:

UIATarget.localTarget().pushTimeout(2);

//接着執行腳本任務;

//時間片出棧

UIATarget.localTarget().popTimeout();

還有一種方式,採用delay方式:

UIATarget.localTarget().delay(2);

兩種方式的區別是,在時間片內,第一種方法會不斷嘗試去執行壓棧和出棧間的腳本任務,一旦能夠執行就執行,不必定在時間片後才執行,而第二種方式是在時間片到後才執行腳本任務。

13.按鈕點擊:

UIATarget.localTarget().frontMostApp().mainWindow().buttons()["xxxxx"].tap();

14截屏功能,事實證實模擬器是能使用截屏功能的:

UIATarget.localTarget().captureScreenWithName("SS001-2_AddedIngredient");

15.驗證結果:

var cell = UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells().firstWithPredicate("name beginswith ‘Tarte’");

if (cell.isValid()) {

UIALogger.logPass(testName);

}

else {

UIALogger.logFail(testName);

}

16.處理彈框,只需指定UIATarget.onAlert:

UIATarget.onAlert = function onAlert(alert) {

 var title = alert.name();

UIALogger.logWarning("Alert with title '" + title + "' encountered.");

if (title == "The Alert We Expected") {

alert.buttons()["Continue"].tap();

return true; //alert handled, so bypass the default handler

}

// return false to use the default handler

 return false;

}

返回FALSE表明點擊取消,TRUE表明肯定。

17.模擬後臺一段時間:

UIATarget.localTarget().deactivateAppForDuration(10);

手機方向旋轉:

UIATarget.localTarget().setDeviceOrientation(UIA_DEVICE_ORIENTATION_PORTRAIT);

18.拖動


window.tableViews()[0].scrollDown();


window.tableViews()[0].scrollUp();


window.tableViews()[0].scrollLeft();


window.tableViews()[0].scrollRight();

19.打印當前屏幕全部空間信息

UIATarget.localTarget().logElementTree();

20.記錄日誌


UIALogger.logStart(「start」);


UIALogger.logPass(「pass」);


UIALogger.logWarning(「warning」);


UIALogger.logFail(「fail」);


UIALogger.logMessage(「message」);


UIALogger.logError(「error」);


UIALogger.logDebug(「debug」);


UIALogger.logIssue(「issue」);

 

21.九宮格搜索輸入框


UIATarget.localTarget().frontMostApp().mainWindow().searchBars()[0]

22.模擬鍵盤操做,


UIATarget.localTarget().frontMostApp().keyboard().typeString(「aaa\n」);\n=回車

23.輸入框輸入,


UIATarget.localTarget().frontMostApp().mainWindow().tableViews()["Empty list"].cells()["用戶名:"].textFields()[0].setValue(「abcd」);

24.獲取對象數組長度,

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

25.獲取文本字符串,

UIATarget.localTarget().frontMostApp().mainWindow().scrollViews()[0].staticTexts()[0].value();

26.打印當前元素的視圖樹:

.logElementTree();

27.篩選框滾動,

UIATarget.localTarget().frontMostApp().mainWindow().pickers()[0].wheels()[0].dragInsideWithOptions({startOffset:{x:0.38, y:0.66}, endOffset:{x:0.38, y:0.12}, duration:1.6});
相關文章
相關標籤/搜索