1.作自動化測試時注意若是是真機話首先要設置不鎖屏。數組
2.自動化測試過程當中若是程序後臺或崩潰了。腳本運行將會暫停,直到程序再次回到前臺。app
3.必須明確指定關閉自動測試,測試完成或中斷都不會自動關閉測試。ide
4.測試也是根據視圖樹的元素位置獲取元素進行測試,根視圖元素是UIATarget。測試
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});