【发布时间】:2022-01-26 17:38:28
【问题描述】:
我的 UI 上有一个空文本字段,尽管它在情节提要中设置了占位符文本(其值为 foo)。在我的 UI 测试中,我试图检查它的文本值是否开始为空,但是当我查询它的值时,它似乎给了我占位符值:
func testTextFieldInitiallyEmpty {
let input = XCUIApplication().textFields["My Text Field"]
XCTAssertEqual(input.value as! String, "")
}
因为测试失败并显示此消息:
XCTAssertEqual 失败:("foo") 不等于 ("")
当然,foo 是占位符值,但不是该文本字段的文本值。如果我写的话,我会预料到该错误消息:
XCTAssertEqual(input.placeholderValue as! String, "")
input 是一个XCUIElement,它实现了XCUIElementAttributes,所以我看不出还有什么可以解决这个问题的。
如何检查(断言)文本字段是否为空?
编辑
在做了一些进一步的研究并尝试了以下关于使用accessibilityValue、label 和title 的input 属性的建议后,我还没有找到任何可以为我提供文本字段的解决方案有文本时为文本值,只有占位符可见时为空字符串。
这似乎是 (a) 一个错误,或者 (b) 来自测试框架的有问题的设计决定,即不提供该功能。至少,XCUIElementAttributes#value 的文档对我来说似乎不够,因为唯一的细节是:
值的确切类型因元素类型而异。
仍在寻找更好的解决方案...
【问题讨论】: