如何使用动态标识符来检查 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 表格单元格
您如何在 Robot Framework 中编写具有多个标识符的动态元素?