2017-05-31 33 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