iOS 自動化測試 Automate UI Testing

1.Write, Export, and Import Automation Test Scripts

里面很容易編寫自己的腳本工具。在自動化儀表內置的腳本編輯器允許您創(chuàng)建和編輯新的測試腳本在你跟蹤文檔,以及導入現有的。

(1)創(chuàng)建一個新的腳本

創(chuàng)建一個新的跟蹤文檔在使用自動化工具分析模板,選擇Automation。

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/

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

相關閱讀更多精彩內容

  • 本文中對于我來說,最大的學習點就是通過命令行運行UI Automation,這對于我來說,就好像打開一個新的學習窗...
    沈家大少閱讀 6,391評論 1 23
  • iOS提供了一個框架UIAutomation,可用來實現自動化測試,可以通過這個框架自定義一些列操作,自動的運行在...
    msq3閱讀 18,743評論 7 34
  • 本文章轉載于搜狗測試 在iOS自動化測試中UI Automation的對象,都是以UIAxxx的形式出現的,例如U...
    夜境閱讀 1,225評論 0 3
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,711評論 19 139
  • 關于iOS的UI自動化測試,是從Xcode7之后才支持的比較好,使用XCTest.framework,Xcode可...
    房小房MT閱讀 5,509評論 4 13

友情鏈接更多精彩內容