1. 程式人生 > >iOS UI自動化——Instruments常用語法

iOS UI自動化——Instruments常用語法

1.理解UIAElement層級關係

  • UIAElement層級的最頂層是UIATarget類,相當於你的裝置或模擬器,該類具有管理和訪問你的裝置相關資訊的基本功能。要想獲得你的target,你可以使用以下的程式碼:

var target = UIATarget.localTarget();

  • 獲得你的application,對應於UIApplication:

var app = target.frontMostApp();

  • 獲得你的主視窗,對應於UIWindow

      var window = app.mainWindow();

  • 列印UIAElement層級關係

你可以使用任意

UI控制元件的logElementTree方法打印出它的所有子元素:

   UIATarget.localTarget().logElementTree();

2.模擬使用者動作

  • 單擊操作

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

  • 對於較複雜的程式,可以精確點選,即確定點選的位置座標

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

  • 其他一些動作

         a)單指雙擊

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

         b) 雙指單擊

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

         CPinch動作

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

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

         d) 拖拽動作

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

  • 輸入文字

  var recipeName = "Unusually Long Name for a Recipe";

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

3.簡潔實用的日誌功能

  • 至少,你應該在每一次指令碼執行的開始和結束打上日誌(logStartlogEnd),在指令碼測試成功或失敗時打上日誌(logPasslogFail),示例如下:

   var testName = "Module 001 Test";

   UIALogger.logStart(testName);

   //你的測試程式碼

   UIALogger.logPass(testName);

  • 列印普通訊息時,可以使用logMessage,如下:

   UIALogger.logMessage("Test 1 finishedTest 2 is    beginning……");

  • 列印警告資訊時,使用logWarning,示例如下:

   UIALogger.logWarning("Test 1 has some problem");

  • 為了避免純文字日誌的枯燥無味,UIAutomation框架為我們提供了測試過程中的截圖功能,可以將你所想要的任意畫面甚至是任意指定某一範圍的區域擷取成圖片,並最終輸出到日誌中去,示例如下:

   var testName = " Test 1";

   UIALogger.logStart(testName);

   //一些測試程式碼

   UIALogger.logMessage("Starting test for login……");

   //截圖

   UIATarget.localTarget().captureScreenWithName("img1   _Login");

   //一些測試程式碼

   UIALogger.logPass(testName);

注意:截圖功能只支援真機,若在模擬器中嘗試,則會在日誌中打印出嘗試截圖出錯的提示資訊


// tableview向下滑動一個螢幕的內容 上下左右

target.frontMostApp().mainWindow().tableViews()[1].scrollDown();

target.frontMostApp().mainWindow().tableViews()[1].scrollUp();

target.frontMostApp().mainWindow().tableViews()[1].scrollLeft();

target.frontMostApp().mainWindow().tableViews()[1].scrollRight();

// tableview按照指定座標滑動,x,y軸均可設定

target.flickFromTo({x:100,y:400},{x:100,y:20});

// 持續向下滑動,tableView和scrollView都可以使用

for (var j = 0; j < 5; j++) { 

    target.flickFromTo({x:100,y:400},{x:100,y:20});

}

// 可見cell的數組裡面的第幾個

target.frontMostApp().mainWindow().tableViews()[1].visibleCells()[0].tap();

// 實際的cell第幾個

target.frontMostApp().mainWindow().tableViews()[1].cells()[0].tap();

// scrollView 上下左右滑動一真個螢幕

target.frontMostApp().mainWindow().scrollViews()[0].scrollUp();

target.frontMostApp().mainWindow().scrollViews()[0].scrollDown();

target.frontMostApp().mainWindow().scrollViews()[0].scrollLeft();

target.frontMostApp().mainWindow().scrollViews()[0].scrollRight();

//button 設定下面的屬性後,自動測試時可以讀取到響應的button

deleteButton.accessibilityLabel = @"press";

// 延時語句

UIATarget.localTarget().delay(3);

// 支援迴圈語句 和 if語句

for (var i = 0; i < 5; i++) { 

}

if (i == 0) {

}

相關推薦

iOS UI自動化——Instruments常用語法

1.理解UIAElement層級關係 UIAElement層級的最頂層是UIATarget類,相當於你的裝置或模擬器,該類具有管理和訪問你的裝置相關資訊的基本功能。要想獲得你的target,你可以使用以下的程式碼: var target = UIATarget.loca

iOS:CoreText的常用語法

ear 單位 [] 翻轉 1.2 iphone 書寫 attach direct CoreText的關鍵語法 一、坐標旋轉 -(void)drawRect:(CGRect)rect { //獲取上下文 CGContextRef ctx = UIGra

解放程式猿(媛)的雙手—iOS UI自動化測試

轉載地址:http://tmq.qq.com/2016/06/uitestingiosautomation/?utm_source=tuicool&utm_medium=referral 前言 隨著移動網際網路時代的蓬勃發展,移動終端的自動化測試也在業界日益活躍

基於instruments-Automation的iOS應用UI自動化測試圖文攻略

iOS的自動化測試框架可分為兩種:注入式和非注入式。注入式的框架通常會提供一些Lib或者是Framework,要求測試人員在待測應用的程式碼工程中匯入這些內容,框架可以通過他們完成對app的驅動,典型的比如monkeytalk。非注入式的框架則是通過蘋果提供的instrum

UI自動化測試之selenium(1)——selenium中的常用api

selenium api 目錄 1 對瀏覽器操作1.1 用webdriver打開一個瀏覽器1.2 最大化瀏覽器&關閉瀏覽器1.3 設置瀏覽器窗口大小1.4 打開測試頁面1.5 處理瀏覽器彈出的新窗口2 頁面元素定位3 如何對頁面元素進行操作3.1 WebElement相關方法3.2 iFram

UI 自動化常用設計模式

作者:孫高飛 今天我只針對一些實際的場景來說一下如何使用這些設計模式來完善UI自動化。  工廠 每種語言實現設計模式的方式都不一樣,這裡僅以java為例。 一般來說,工廠模式是為了把建立一個物件的操作都集中在一起管理,其他所有需要用到這個物件的程式碼都呼叫工廠類來建立物件。 在

iOS-Swift3常用語法

常量和變數 在Swift中規定:在定義一個識別符號時必須明確說明該識別符號是一個常量還是變數 使用let來定義常量,定義之後不可以修改 使用var來定義變數,定義之後可以修改 //定義標示符表明是變數還是常量! //let 常量 let age :

UI自動化選型-技術選型和程式碼規範與常用設計模式

技術選型   瀏覽器驅動框架: selenide。 這是一個基於web driver的開源框架, 是一群老外在github上開源的基於PC瀏覽器進行自動化的測試框架。 文件: http://selenide.org/documentation.html https://te

UI 自動化常用設計模式 (二)

作者:孫高飛   狀態模式 狀態模式之所以常用是因為在我們的很多業務邏輯中都會有不同狀態的出現,比如訂單的狀態,任務的狀態。而不同的狀態下UI上會有不同的行為。 比如不同的控制元件的展示, 不同的報錯資訊等。 我們往往需要驗證不同狀態下的邏輯。 但是我們的狀態往往比較多(一般怎

關於UI自動化中元素定位常用方法的個人總結

1、如果目標元素有id屬性,優先使用id定位; 2、元素locator儘可能保證簡潔,考慮locator中路徑的變化頻率,儘量減少後期更新和維護成本; 3、使用xpath時,不要一味的使用‘/’逐層進行選擇;合理使用‘/’和‘//’,能簡化表示式; 4、儘量使用函式和運算子,如contains(),te

iOS UI Test 自動化測試開發

關於iOS的UI自動化測試,是從Xcode7之後才支援的比較好,使用XCTest.framework,Xcode可以自動錄製UI測試的動作流,還有就是可以使用XCTest UI testing API。 本文主要講的是如何進行自動化測試的開發,即XCTest UI

iOS效能自動化instruments

1.trace&template 模板包括 instruments提供的standard模板,你也可以通過自定義儲存成custom模板 standard模板對應的就是activity monitor這些 custom模板,你可以任意組合standard模板

iOS自動化測試之UI自動化框架調研

有哪些可用的UI自動化框架?* 他們的區別在哪裡? 我們是如何選擇的 條件1:支援移動端app自動化        從以上對比其實已經可以比較明確的幫助大家做出自己的選擇,從我所在的團隊來講,我們主要做的是移動端的UI自動化,相信現在

C# Winform 跨線程更新UI控件常用方法總結(轉)

sum tex ase adc 而是 this obj 出現 turn 出處:http://www.tuicool.com/articles/FNzURb 概述 C#Winform編程中,跨線程直接更新UI控件的做法是不正確的,會時常出現“線程間操作無效: 從不是創建控件的

iOSUI-手勢及控件(segment switch slider)的使用

art 使用 per back int dds white array add // // ViewController.m // UI-手勢及控件練習 // // Created by jzq_mac on 15/7/24. // Copyrigh

mysql數據庫常用語法

mysql數據庫、mysql語法、mysql常用命令、mysql增刪改查1)登錄mysql數據庫。mysql –uroot –poldboy123mysql2) 查看當前登錄的用戶。 selectuser();3) 創建數據庫oldboy,並查看已建庫完整語句。create database oldboy;s

iOS開發之Runtime常用示例總結

開發一、構建Runtime測試用例本篇博客的內容是依托於實例的,所以我們在本篇博客中先構建我們的測試類,Runtime將會對該類進行相關的操作。下方就是本篇博客所涉及Demo的目錄,上面的RuntimeKit類是講Runtime常用的功能進行了簡單的封裝,而下方的TestClass以及相關的類目就是我們Run

shell常用語法案例

shell常用語法案例一、 正則表達式: 正則表達式(或稱Regular Expression,簡稱RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式。 該模式描述在查找文字主體時待匹配的一個或多個字符串。 正則表達式作為一個模板,將某個字符模式與所搜

iOS UI調試工具 -- UIDebuggingInformationOverlay

target targe -- var 問題 。。 rep 開發 娛樂 英文原文: http://ryanipete.com/blog/ios/swift/objective-c/uidebugginginformationoverlay/ 無意中看到iOS自帶調試工具

Robot Framework使用Phantomjs進行無界面UI自動化測試

com 程序 linux版本 -c 框架 data 我們 img 必須 Robot Framework 是一款關鍵字驅動的驗收自動化測試框架,現在在國內使用的越來越廣泛了。一種通用的Web UI自動化測試解決方案是Robot Framework+Selenium2Lib