如何在UI测试中从标签中检索变量数据

时间:2017-05-31 15:54:25

标签: ios swift unit-testing swift3 xcode-ui-testing

这是我到目前为止所做的,我只是想在标签中输出结果并根据设置结果进行测试:

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的值。 第二次尝试构建但测试失败,因为即使标签确实产生了正确的值,测试也是将标签读为空白,这使我们第三次尝试通过测试,因为我将它与空白标签进行了比较,这是它的表现是什么。

正如我上面所说,我只是想知道如何检索标签值,这是"计算的结果"或按下按钮。

1 个答案:

答案 0 :(得分:13)

不幸的是,当在UITest中访问UILabel时,XCUIElement的{​​{1}}属性未使用value的{​​{1}}属性设置。它总是空的。

text还有一个UILabel属性,您可以将其用于您的目的。您只需要确保没有在XCUIElement上设置label。请改用accessibilityLabel

在你的应用中:

UILabel

在你的UITest中:

accessibilityIdentifier