当文本字段为空时,如何在 Xcode UI 测试中测试 UITextField?

Posted

技术标签:

【中文标题】当文本字段为空时,如何在 Xcode UI 测试中测试 UITextField?【英文标题】:How to test UITextField in Xcode UI Testing when the text field is empty? 【发布时间】:2016-01-07 15:05:29 【问题描述】:

我正在 Xcode 中创建UITest。当我记录我的测试时,它工作正常,但是当我运行测试时,它给出了一个错误。

这些是发生错误的代码行:

XCUIElement *clearTextTextField = [app.textFields containingType:XCUIElementTypeButton 
                                                      identifier:@"Clear text"].element;
[clearTextTextField typeText:@"sheffield"];

错误提示

UI 测试失败 - 未找到文本字段的匹配项

我想这是因为我的文本字段没有任何初始字符串,测试人员找不到带有初始字符串 "Clear Text" 的文本框。

我看了以下tutorial on youtube.

演示代码结果很好,因为他的文本字段有一个初始字符串。 (至少这是我认为的问题)

有没有办法让空文本字段的测试工作?

【问题讨论】:

在Interface Builder中设置Accessibility Identifier,它会找到它,即使它是空的。 【参考方案1】:

有几种方法可以做到这一点。

    如果 textField 有占位符文本,您可以使用占位符文本查找 textField。

    您可以使用elementBoundByIndex 方法在索引处获取文本字段。即,如果那是当时您可以使用的应用程序中唯一的 textField

    XCUIApplication().textFields.elementBoundByIndex(0) 
    

获取文本字段。 (或者您当时需要获取特定文本字段的任何查询)

    您可以在代码或情节提要中设置可访问性标识符以查找 textField。

在设置可访问性标识符之前使用选项 2 很好,只要您的 textField 始终可以通过相同的查询找到。此外,如果多个 textFields 同时具有相同的占位符文本,选项 1 将失败,因此选项 2 更具吸引力。

【讨论】:

除了#2,如果屏幕上只有一个文本字段,您可以使用XCUIApplication().textFields.element

以上是关于当文本字段为空时,如何在 Xcode UI 测试中测试 UITextField?的主要内容,如果未能解决你的问题,请参考以下文章

仅当文本字段为空时如何显示图像?

当文本字段为空时禁用警报按钮 Swift 3

SwiftUI:仅当输入不为空时才启用保存按钮

当textfield为空时禁用按钮等待其他文本字段中的任何更改

仅当字段不为空时才进行电子邮件验证

在 xcode 8 中登录的 UI 测试