如何在 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
时,XCUIElement
的 value
属性未使用 UILabel
的 text
属性设置。它总是空的。
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 测试中从标签中检索变量数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在预发布测试中从 TestFlight 应用程序中检索崩溃日志
Firestore如何在回收站视图中从firestore检索数据