Ios 刷新应用程序';屏幕更新后的s XUIElementQuery

Ios 刷新应用程序';屏幕更新后的s XUIElementQuery,ios,xcode-ui-testing,Ios,Xcode Ui Testing,我正在为我的应用程序编写UI测试。 更新屏幕后,如何刷新应用程序按钮列表/应用程序其他元素 例如: 我正在按登录屏幕上的登录按钮,等待服务器响应。 响应到达后,我看到另一个屏幕,需要按下该屏幕上的按钮,但button.exists==NO 每次屏幕更新时,我是否应该创建新的应用程序实例([[XCUIApplication alloc]init])?您应该等待登录操作完成,等待登录屏幕上的唯一元素不存在 这将确保当屏幕内容更改时,XUIApplication上可用的视图层次结构将被刷新。您应该等待

我正在为我的应用程序编写UI测试。 更新屏幕后,如何刷新
应用程序按钮列表
/
应用程序其他元素

例如: 我正在按登录屏幕上的登录按钮,等待服务器响应。 响应到达后,我看到另一个屏幕,需要按下该屏幕上的按钮,但
button.exists==NO


每次屏幕更新时,我是否应该创建新的应用程序实例(
[[XCUIApplication alloc]init]
)?

您应该等待登录操作完成,等待登录屏幕上的唯一元素不存在


这将确保当屏幕内容更改时,XUIApplication上可用的视图层次结构将被刷新。

您应该等待登录操作完成,等待登录屏幕上不存在唯一的元素


这将确保当屏幕内容更改时,XUIApplication上可用的视图层次结构会被刷新。

您应该在登录accessibilityIdentifier后授予要点击的按钮,然后等待该按钮存在。这确保了在加载新UI之前,您不会尝试与应用程序交互,而不仅仅是旧UI消失了


根据Joe Masilotti的优秀指南,我强烈建议将“等待此元素出现”功能提取到测试助手中(尽管您必须在ObjC中重新实现,正如他在Swift中所写的那样)。

您应该在登录accessibilityIdentifier后授予想要点击的按钮,然后等待它的存在。这确保了在加载新UI之前,您不会尝试与应用程序交互,而不仅仅是旧UI消失了

我强烈建议按照Joe Masilotti的优秀指南,将“等待此元素出现”功能提取到测试助手中(尽管您必须在ObjC中重新实现它们,正如他在Swift中编写的那样)

XCUIElement *logInButton = app.buttons["signInButton"];

// Tap the log in button
[logInButton tap];

// Wait for the login operation to complete
NSPredicate *notExistsPredicate = [NSPredicate predicateWithFormat:@"exists == false"];
[self expectationForPredicate:notExistsPredicate evaluatedWithObject:logInButton handler: nil];
[self waitForExpectationsWithTimeout:10.0 handler: nil]; // Adjust timeout as needed