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

Posted

技术标签:

【中文标题】如何在 UI 测试中从标签中检索变量数据【英文标题】:How to retrieve variable data from a label in UI tests 【发布时间】:2017-05-31 15:54:24 【问题描述】:

这就是我目前所拥有的,我只是试图获取标签中输出的结果并针对设置的结果进行测试:

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】:

不幸的是,当在 UITest 中访问 UILabel 时,XCUIElementvalue 属性未使用 UILabeltext 属性设置。它总是空的。

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

在您的应用中:

label.accessibilityIdentifier = "Roman Numerals"

在您的 UITest 中:

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

【讨论】:

我真的遇到了很多麻烦。谢谢。 @joem 你是怎么知道要使用哪个属性的?? @tomkaith13 我查看了ˋXCUIElementAttributesˋ,其中ˋXCUIElementˋ符合。该协议定义了所有 UI 元素的公开属性。然后我只是看看那些属性的值,以防你查询ˋUILabelˋ。 @joem 非常感谢。当我也被卡住时,我会去看那里

以上是关于如何在 UI 测试中从标签中检索变量数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在pyqt中从对话框窗口检索数据到主窗口?

如何在预发布测试中从 TestFlight 应用程序中检索崩溃日志

Firestore如何在回收站视图中从firestore检索数据

如何在 django 中从一对多关系中检索数据?

如何在 C# 中从 MySQL 中检索 tinyint 的数据类型?

如何在 POSTGRESQL 中从两个不同的数据库中检索数据