我使用Appium自动执行IOS app测试用例。我有一个场景,我必须确定..我在哪个屏幕上,以便我可以关闭屏幕
从更广泛的角度来看,我们的应用程序中有一个inapp通知,可以随机打开。
如果能够识别当前屏幕,我可以处理这些情况。 我使用driver.currentActivity方法在Android中处理同样的事情
我需要为IOS应用程序提供某种相同的方法
答案 0 :(得分:-2)
使用以下方法
获得最顶层的视图控制器+ (UIViewController*) topMostController
{
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
return topController;
}
或者,如果您有导航或UIabbar控制器,则使用以下方法获取可见的视图控制器
- (void)applicationWillResignActive:(UIApplication *)application
{
UIViewController *vc = [self visibleViewController:[UIApplication sharedApplication].keyWindow.rootViewController];
}
- (UIViewController *)visibleViewController:(UIViewController *)rootViewController
{
if (rootViewController.presentedViewController == nil)
{
return rootViewController;
}
if ([rootViewController.presentedViewController isKindOfClass:[UINavigationController class]])
{
UINavigationController *navigationController = (UINavigationController *)rootViewController.presentedViewController;
UIViewController *lastViewController = [[navigationController viewControllers] lastObject];
return [self visibleViewController:lastViewController];
}
if ([rootViewController.presentedViewController isKindOfClass:[UITabBarController class]])
{
UITabBarController *tabBarController = (UITabBarController *)rootViewController.presentedViewController;
UIViewController *selectedViewController = tabBarController.selectedViewController;
return [self visibleViewController:selectedViewController];
}
UIViewController *presentedViewController = (UIViewController *)rootViewController.presentedViewController;
return [self visibleViewController:presentedViewController];
}