【问题标题】:How to identify the screen name or view controller in IOS appIOS app中如何识别屏幕名称或视图控制器
【发布时间】:2017-02-06 03:29:09
【问题描述】:

我正在使用 Appium 自动化 IOS 应用程序测试用例。我有一个场景,我必须确定..我在哪个屏幕上,以便我可以关闭屏幕

从更广泛的角度来看,我们的应用中有一个应用内通知,它会以随机方式打开。

因此,如果我能够识别当前屏幕,我就可以处理这些情况。 我在 Android 中使用 driver.currentActivity 方法处理同样的事情

IOS 应用需要某种相同的方法

【问题讨论】:

标签: ios automation appium-ios


【解决方案1】:

您可以使用以下方法获得最顶层的视图控制器

+ (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];

}

【讨论】:

  • 我正在使用 java 编写自动化脚本。请告诉我如何在 java 环境中运行您的代码,
  • 问题专门询问了在 Appium 中执行此操作。无需复制粘贴 iOS 代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 2014-08-27
  • 2012-10-06
  • 2020-08-07
  • 2015-06-26
相关资源
最近更新 更多