【问题标题】:How to find the current activity of an app in ios如何在ios中查找应用程序的当前活动
【发布时间】:2017-12-16 08:17:33
【问题描述】:

我正在使用 Appium 进行 IOS 测试。 (java) 我希望能够检查应用程序的当前活动。从某种意义上说,当一个应用程序从可点击切换到另一个时(比如我关闭应用程序或切换到另一个应用程序或打开通知滚动条。我希望能够检测页面名称。要获取当前活动名称,我使用驱动程序。 currentActivity(); 包含在 AndroidDriver 类中。

但是ios中没有直接调用当前包,但是很多人建议可以通过调用driver.getPageSource()查看设备屏幕中已有元素的属性来查找;我如何使用 driver.getPageSource 来实现这一点,或者有没有其他方法可以做到这一点?任何关于这方面的建议都会有所帮助。

【问题讨论】:

  • 目前appium不支持app之间的切换,因为苹果的XCUITest没有提供这个功能。但是,在 Xcode 9 和 iOS 11 中,苹果在 xcodebuild 命令中提供了切换到应用程序的操作。所以我们可以期待 Appium 将在未来提供切换应用程序的支持。希望这会对你有所帮助。
  • 嗨,我不是要切换应用程序。我的问题:是否可以使用 appium for ios 获取当前活动以及如何找到可点击的项目?
  • iOS 没有活动的概念,您必须使用一些独特的元素来识别页面/屏幕
  • 您能否分享任何工作示例。那真的很有帮助。提前致谢。
  • 嗨,iOS 应用程序的每个页面顶部都有导航栏,并且有屏幕/页面名称(导航标题)。使用 xpath //XCUIElementTypeNavigationBar/XCUIElementTypeStaticText 获取页面标题的文本并与您的预定义页面进行比较。

标签: appium-ios


【解决方案1】:

你可以查询当前应用状态,如果你有应用的bundleId那么你可以 查询它的状态是在后台运行还是在前台运行,它可以解决您的问题。

Map<String, Object> params = new HashMap<>();
params.put("bundleId", "com.myapp");
final int state = (Integer)js.executeScript("mobile: queryAppState", params);

根据文档可以有 5 种可能的状态。

0: The current application state cannot be determined/is unknown
1: The application is not running
2: The application is running in the background and is suspended
3: The application is running in the background and is not suspended
4: The application is running in the foreground

Refrences

【讨论】:

    【解决方案2】:

    要查看你的应用是否在运行,假设你知道bundleId,你可以直接使用驱动:

    driver.queryAppState('com.apple.Preferences');
    

    它返回应用程序状态:

    NOT_INSTALLED,
    NOT_RUNNING, 
    RUNNING_IN_BACKGROUND_SUSPENDED,
    RUNNING_IN_BACKGROUND, 
    RUNNING_IN_FOREGROUND
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 2012-08-10
      • 1970-01-01
      相关资源
      最近更新 更多