2017-05-31 39 views
2

這是我到目前爲止,我只是試圖得到的結果是在標籤輸出並測試它反對的結果集:如何從UI標籤檢索變量數據測試

func testExample() { 

    let app = XCUIApplication() 
    let enterRomanNumeralsHereTextField = app.textFields["Enter roman numerals here"] 
    enterRomanNumeralsHereTextField.tap() 
    let convertButton = app.buttons["Convert"] 

    //1 
    enterRomanNumeralsHereTextField.typeText("LL") 
    convertButton.tap() 
    XCTAssertTrue(app.staticTexts.element(matching:.any, identifier: "Roman Numerals").label == "NotValidRomanNumber") 


    //2 
    enterRomanNumeralsHereTextField.typeText("LXXXIX") 
    convertButton.tap() 
    XCTAssertEqual(app.otherElements.containing(.staticText, identifier:"Roman Numerals").element.value as! String, "89") 

    //3 
    enterRomanNumeralsHereTextField.typeText("") 
    enterRomanNumeralsHereTextField.typeText("LXXVIII") 
    convertButton.tap() 
    XCTAssertEqual(app.otherElements.containing(.staticText, identifier:"Roman Numerals").element.value as! String, "") 



    // Use recording to get started writing UI tests. 
    // Use XCTAssert and related functions to verify your tests produce the correct results. 
} 

第一次嘗試(標記爲1)給我一個構建錯誤,說「無法調用非函數類型XCUIElement的值。 第二次嘗試生成但測試失敗,因爲即使標籤的確產生了正確的值,測試也正在讀取標籤作爲空白,帶給我們第三次通過測試的機會,因爲我將它與空白標籤進行了比較,這就是它的顯示效果。

所以,正如我上面所說,我只是想知道如何檢索標籤值是「計算」或按鈕按下的結果。

回答

6

不幸的是,當一個UILabel在UITest被訪問的XCUIElementvalue屬性未設置與UILabeltext財產。它總是空的。

XCUIElement也有一個label屬性,您可以使用您的目的。您只需確保您未在​​UILabel上設置accessibilityLabel。使用accessibilityIdentifier來代替:

在您的應用程序:

label.accessibilityIdentifier = "Roman Numerals" 

在你UITest:

XCTAssertEqual(app.staticTexts.element(matching:.any, identifier: "Roman Numerals").label, "89") 
+0

我真的有很多與它的麻煩。謝謝。 – andrei

+0

@joem你怎麼知道要使用哪個屬性? – tomkaith13

+0

@ tomkaith13我看了'XCUIElementAttributes''XCUIElement'符合。該協議爲所有UI元素定義了暴露的屬性。然後,我只是在查詢'UILabel'時查看了這些屬性的值。 – joern