1.Write, Export, and Import Automation Test Scripts
里面很容易編寫自己的腳本工具。在自動化儀表內置的腳本編輯器允許您創(chuàng)建和編輯新的測試腳本在你跟蹤文檔,以及導入現有的。
(1)創(chuàng)建一個新的腳本
創(chuàng)建一個新的跟蹤文檔在使用自動化工具分析模板,選擇Automation。

(2)點擊choose ,會跳到如下圖的界面,注意紅色框的地方,下面我們將詳細講解每個代表的意思和注意的點,

1.點擊紅色框的設置

2.在這個腳本區(qū)域,點擊Add->Creat

3.雙擊MyScript ,可以重新命名文件的名字。
4.在類型列表的導航欄中,如下圖,可以選擇腳本,或者直接輸入要編寫的腳本代碼。

窗格底部的細節(jié)部分,如下圖:

左下角的按鈕是使用腳本在選中的應用程序中,保存了配置的文件,包括腳本,無論何時如果想測試APP就可以再次打開它,在這里我們可以進行測試代碼的編寫或者在右邊區(qū)域直接導入已經寫好的測試代碼,正如前面提到的,這些測試代碼需要使用JavaScript進行編寫,如果你不熟悉或者嫌麻煩,可以使用底部的錄制功能,啟用錄制后你對屏幕的測試操作都會被自動的轉為測試代碼,非常方便。
測試如果不通過,就會在頂部的時間軸上標紅,測試也會自動停止。
從磁盤上輸入一個腳本文件。
1.創(chuàng)建一個腳本。
2.單擊腳本的內容區(qū)域,選擇快捷菜單Export, 可以輸出當前文件。

3.點擊保存,存儲到本地。

導入以前的腳本
1.選擇自動化分析模板。
2.點擊面板的設置按鈕。
3.點擊Add -> Import
4.引導找到要打開的文件,打開。
手動記錄用戶界面操作自動化腳本
為了簡化腳本開發(fā)的成本,允許記錄在iOS設備或者模擬器的操作行為,要使用這個功能,創(chuàng)建一個自動化的跟蹤文檔,然后可以錄制在設備上的操作行為,同時輸入JavaScript代碼。
用戶界面操作記錄手冊
1.創(chuàng)建或者打開一個包含自動化的腳本文件。
2.點擊控制面本的設置按鈕。
3.從列表中選擇腳本。
4.選中你要在編輯的腳本文件。
5.點擊文本編輯的錄制按鈕(下圖的中間錄制按鈕)。

如果選中的目標文件開始運行和腳本狀態(tài)在更新表明捕捉正在進行中。
6.執(zhí)行所需的操作在模擬器中。
PS:為了確保準確的捕捉,慢慢進行這些操作,確保每次操作,代碼都有更新。
7.點擊停止按鈕(下圖的右側按鈕),文本編輯器停止捕捉行為。

在執(zhí)行操作中,會自動生成腳本代碼,其中包含一些替代的語法,點擊箭頭會展示全部的代碼,或者收齊。
如果在應用程序崩潰的情況下,腳本會被阻塞,直到程序再次運行,腳本才會繼續(xù)運行。
測試代碼的相關簡介
1.獲取到屏幕的方法如下:
UIAtarget.localTarget().ftontMostApp().mainWindow()

2.view
(1)獲取tableView的方法如下:
UIATarget.localTarget().frontMostApp().mainWindow ().tableViews()[0]

(2)獲取tableView的第一行
UIATarget.localTarget().frontMostApp().mainWindow ().tableViews()[0].cells()[0]

(3)獲取tableView 的label
UIATarget.localTarget().frontMostApp().mainWindow ().tableViews()[0].cells()[0].elements()[“測試2691”];

(4).button的點擊事件
例如模擬一個button的點擊事件
UIATarget.localTarget().frontMostApp().navigationBar().buttons()["Add"].tap();
(5)文本輸入
例如模擬UITextField 的文字輸入
var name = “輸入”; UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0].setValue(name);
(6)模擬手勢操作
1.Taps
UIATarget.localTarget().tap({x:100,y:200});
UIATarget.localTarget().doubleTap({x:100,y:200});
UIATarget.localTarget().twoFingerTap({x:100, y:200});
2.Pinches
//指定pinch在2秒內完成UIATarget.localTarget().pinchOpenFromToForDuration({x:20, y:200}, {x:300, y:200},2);
UIATarget.localTarget().pinchCloseFromToForDuration({x:20, y:200}, {x:300, y:200}, 2);
3.Drag and Flick
UIATarget.localTarget().dragFromToForDuration({x:160, y:200}, {x:160, y:400}, 1);
UIATarget.localTarget().flickFromTo({x:160, y:200}, {x:160, y:400});
寫了一個關于創(chuàng)建過程的例子, gif 有點卡,主要的過程就是從首頁->訪客通行證->創(chuàng)建訪客通行證->返回到訪客通行證->刪除訪客通行證->放回到首頁.
腳本的代碼如下:
var target = UIATarget.localTarget();
target.setDeviceOrientation(UIA_DEVICE_ORIENTATION_PORTRAIT);
target.frontMostApp().mainWindow().collectionViews()[0].dragInsideWithOptions({startOffset:{x:0.47, y:0.76}, endOffset:{x:0.47, y:0.56}});
target.frontMostApp().mainWindow().collectionViews()[0].cells()["訪客通行證"].tap();
target.frontMostApp().mainWindow().buttons()["visitors"].tap();
target.frontMostApp().mainWindow().scrollViews()[0].buttons()[0].tap();
target.frontMostApp().mainWindow().pickers()[0].wheels()[0].dragInsideWithOptions({startOffset:{x:0.81, y:0.50}, endOffset:{x:0.80, y:0.31}});
target.frontMostApp().mainWindow().buttons()["確 定"].tap();
target.frontMostApp().mainWindow().scrollViews()[0].textFields()[0].textFields()[0].tap();
target.frontMostApp().keyboard().typeString("r");
target.frontMostApp().mainWindow().scrollViews()[0].textFields()[1].textFields()[0].tap();
target.frontMostApp().keyboard().typeString("15662170832");
target.frontMostApp().mainWindow().scrollViews()[0].textViews()[0].tapWithOptions({tapOffset:{x:0.10, y:0.40}});
target.frontMostApp().keyboard().typeString("Wq");
target.frontMostApp().navigationBar().buttons()["確定"].tap();
target.delay(2);
target.frontMostApp().mainWindow().tableViews()[0].cells()[0].buttons()["delete"].tap();
// Alert detected. Expressions for handling alerts should be moved into the UIATarget.onAlert function definition.
UIATarget.onAlert = function onAlert(alert) {
return true;
}
target.frontMostApp().alert().defaultButton().tap();
target.frontMostApp().navigationBar().leftButton().tap();

參考文章
1.https://developer.apple.com/library/ios/documentation/DeveloperTools/Reference/UIAutomationRef/
2.https://onevcat.com/2015/09/ui-testing/