如何使用动态标识符来检查 UI 元素的值?

Posted

技术标签:

【中文标题】如何使用动态标识符来检查 UI 元素的值?【英文标题】:How to use a dynamic identifier to check for values of UI elements? 【发布时间】:2016-01-15 11:45:55 【问题描述】:

我开始使用 Xcode 进行 UI 测试,我正在尝试检查 UITextField 的值。 我可以通过

轻松做到这一点
XCTAssertTrue(app.staticTexts[@"value of string"].exists);

不过,我确实想对动态内容做同样的事情。理想情况下,我需要类似的东西

NSString* requiredValue = "computed string";
XCTAssertTrue(app.staticTexts[requiredValue].exists);

我该如何实现呢?我将不胜感激任何提示或链接到可以回答这个问题的好资源。

【问题讨论】:

【参考方案1】:

您可以通过其accessibilityIdentifier 而不是其内容/值来引用标签。

首先在您的生产代码中设置标识符。这也只会在测试期间显示,即使启用了辅助功能的用户也不会显示。

UILabel *label = [[UILabel alloc] init];
label.accessibilityIdentifier = @"Username";
label.text = @"can be anything"; // just to prove the point

然后在你的测试中你可以引用它。

XCTAssert(app.staticTexts[@"Username"].exists);

以下是我为帮助 UI 测试而编写的一些参考资料:

UI Testing in Xcode 7 UI Testing Cheat Sheet and Examples XCTest Reference

【讨论】:

太酷了!然后我怎样才能从XCUIElementQuery 访问文本? @SebastianHojas: XCTAssertEqual(app.staticTexts[@"Username"].label, @"can be anything"); 啊,完美,这正是我想要的。谢谢!

以上是关于如何使用动态标识符来检查 UI 元素的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 XCUITest 查询 SwiftUI 表格单元格

如何检查 Zebkit UI 的元素

检查 ui 元素的值是不是已更改

您如何在 Robot Framework 中编写具有多个标识符的动态元素?

ui测试xcode,如何使用cellquery点击表格视图单元格按钮

如何将 jquery ui 自动完成添加到动态创建的元素?