Xcode UI测试:如何在继续测试之前检查下一个XCUIElement是什么

时间:2017-01-23 15:56:23

标签: objective-c xcode xcode-ui-testing

我在第1页,想要导航到第2页。但是当我制作时 第1页上的http Get请求,如果服务器忙,它将返回错误,我将显示带有警报视图的错误,但是如果请求成功,那么我将导航到第2页。除此之外,如果我的http获取请求是返回错误,我将重复调用http Get请求,直到能够继续第2页。现在的问题是如何知道将出现的下一个UI,目前我使用下面的代码来检查下一个元素将出现,但此方法将在找不到元素时终止测试。任何可以检查元素A是否找到的解决方案然后继续执行步骤A,否则如果元素B然后执行步骤B.抱歉我的英语和长句。

enter image description here

XCUIElement *label = self.app.staticTexts[@"Page 2"];   
NSPredicate *exists = [NSPredicate predicateWithFormat:@"exists == 1"];  

[self expectationForPredicate:exists evaluatedWithObject:label handler:nil];   
[self waitForExpectationsWithTimeout:10.0f handler:nil]; 

1 个答案:

答案 0 :(得分:1)

您的问题是您的测试不具有确定性:您无法确定服务器的响应是否成功。要删除服务器引入的这种非确定性,您可以将请求存根或模拟到服务器。

您可以创建一个模拟服务器,该服务器设置为在特定条件下发送特定响应,或者您可以使用存根框架在应用程序中存根响应。

我使用OHHTTPStubs来执行此操作。 Just Eat已经编写了一个关于如何为UI测试实现它的good blog post,尽管如果你使用的是Swift,你需要从Objective-C翻译它。