iOS 系統UI自動化測試介紹(2)

發表于:2016-11-15來源:簡書作者:孢子菌點擊數: 標簽:自動化測試
看這個簡單的小栗子,操作流程:找到tabbar-找到名稱是First的button點擊-給第一個textField設值-點擊鍵盤的return-取id是RecipeName的staticTexts(label)的值-斷言該

看這個簡單的小栗子,操作流程:找到tabbar->找到名稱是“First”的button點擊->給第一個textField設值->點擊鍵盤的return->取id是“RecipeName”的staticTexts(label)的值->斷言該label內容和之前輸入內容的相等。

可以看出尋找控件的兩種方式:依據控件Accessibility identitifer查找;依據控件在數組的下標查找。前者需要你去設置,增加開發時成本。后者的變化性高,UI層級改變導致你的用例改變。

test("Test 1", function(target, app) {

     target.logDevice();

     var window = app.mainWindow();
     app.logElementTree();

     //-- select the elements
     UIALogger.logMessage( "Select the first tab" );
     var tabBar = app.tabBar();
     var selectedTabName = tabBar.selectedButton().name();
     if (selectedTabName != "First") {
        tabBar.buttons()["First"].tap();
     }

     //-- tap on the text fiels
     UIALogger.logMessage( "Tap on the text field now" );

     var recipeName = "Unusually Long Name for a Recipe";
     window.textFields()[0].setValue(recipeName);

     target.delay( 2 );

     //-- tap on the text fiels
     UIALogger.logMessage( "Dismiss the keyboard" );
     app.logElementTree();
     app.keyboard().buttons()["return"].tap();

     var textValue = window.staticTexts()["RecipeName"].value();

     assertEquals(recipeName, textValue);
});

這里有篇詳細的教程,如果想要UIAutomation的表現可以下載一個Xcode 7來跑一跑。Demo請戳我

3.UITest

UITest是Apple隨著Xcode 7和iOS 9新的UI自動化測試框架。較之前不同的是,在UITest框架下,我們可以使用自己熟悉的Objc和Swift語言來編寫自動化測試的腳本。除此之外,UITest最大的亮點是支持屏幕錄制——通過對App的操作自動生成相應的測試腳本代碼。這意味著非專業人士,也可以很方便地參與到自動化測試里來。

原理和UIAutomation一樣,UITest也依賴控件的Accessibility屬性,UITest為所有UIKit控件提供了一個XCUI開頭的代理類。比如UIApplication,對應的是XCUIApplication,在 UI Testing 中代表整個 app 的對象。

對于一般的UIKit對象,Apple提供XCUIElement對象作為映射。我們不能直接通過得到的 XCUIElement 來直接訪問被測 app 中的元素,而只能通過 Accessibility 中的像是 identifier 或者 frame 這樣的屬性來獲取 UI 的信息。關于具體的可用屬性,可以參看 XCUIElementAttributes 的文檔。雖然不能直接通過Element得到屬性,但是可以通過- descendantsMatchingType:,訪問子節點,從而得到層級結構。

hello world和屏幕錄制操作,可以參考喵大的筆記,附有demo哦。

4.Appium

UITest支持iOS開發熟悉的編程語言、屏幕錄制等多項強大功能,但這些都是和Xcode這個IDE綁定的。當我們在Xcode里寫完代碼,本地運行,這種種更像是單元測試,而沒有太多自動化的味道了。一段真正的自動化測試腳本,應該和被測代碼分開,能夠部署到一臺服務器上自動運行,讓一項自動化測試真正自動化起來,成為了我的小目標3.0版本。在這里,Appium這個強大的自動化測試工具登場了,看看他的自我介紹。

Appium 是一個開源的,跨平臺的自動化測試工具。 它支持模擬器(iOS,FirefoxOS,Android)和真機(iOS, Android, FirefoxOS)上的原生應用,混合應用和移動 web 應用。

原文轉自:http://www.jianshu.com/p/aae160cb9cc4

...
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97