如何迭代多个XCUIElements

时间:2015-11-07 01:36:05

标签: ios xctest ui-testing xcode-ui-testing

也许我误解了查询和xcuielements是如何工作的,但我想迭代查询的结果。

在我的应用中,我在我的应用的屏幕上发送了两次文本号码/号码。我想检查两个数字是否相同。例如,我的屏幕上显示以下文字。

10/10
0/0

我使用以下代码来查找这两个静态文本元素

XCUIElement *staticTexts = [self.app.staticTexts elementMatchingPredicate:[NSPredicate predicateWithFormat:@"label contains '/'"]];

这会获取两个静态文本元素,但我无法遍历这两个元素来检查标签。如果只检索到一个元素就不会有问题,不幸的是有两个。如果有更好的方法,请告诉我。我是UI测试的新手。

1 个答案:

答案 0 :(得分:1)

您正在调用的方法,-elementMatchingPredicate:仅返回元素。请注意,方法名称是单数。尝试在返回的对象上调用任何方法将导致抛出异常。

我建议您采用稍微不同的方法进行测试。由于您正在编写测试决定第一个数字应该是什么。然后,您可以使用它来验证第二个数字是否相同。

为此,只需在每个标签上设置不同的-accessibilityIdentifier即可。然后你可以单独断言每一个。

XCUIApplication *app = [[XCUIApplication alloc] init];
XCTAssertEqual(app.staticTexts[@"Number Input"].value, @"867-5309");
XCTAssertEqual(app.staticTexts[@"Number Confirm"].value, @"867-5309");