【问题标题】:iOS - Logout from Apple Store / Restore Device ProgrammaticallyiOS - 从 Apple Store 注销/以编程方式恢复设备
【发布时间】:2017-09-27 00:11:11
【问题描述】:

我正在自动化测试用例以在多个设备上并行运行。我正在为此使用 Appium,并且效果很好。我的问题是我有一些测试用例需要设备登录到特定的 Apple Store 帐户。此外,设备可能已经登录到另一个帐户,而我没有手动注销的选项。如果设备没有附加帐户,我的登录帐户的测试用例已经运行良好(在我的应用程序中,我尝试执行需要 Apple ID 的操作,出现需要登录的警报并且我已经自动化了登录过程)。问题是设备已经登录到另一个帐户。

我的两个选择是:

  • 强制设备从 Apple Store 中注销
  • 在没有记录的情况下创建设备备份并在我的测试之前恢复此备份

我无法找到处理第一个选项的方法。第二个使用 idevicebackup2(来自 libimobiledevice 的库)工作。这里的问题是,在恢复设备数据后,会出现设置向导,并且无法自动摆脱它。我尝试使用 cfgutils 删除向导步骤,但即使在删除所有步骤后,恢复后向导仍显示为等待确认。

我想知道是否有办法选择第一个选项,或者可以跳过第二个选项中的设置向导,或者是否可以部分恢复备份(只需清除 Apple ID 数据)为了避免重新启动设备并再次被向导卡住。提前致谢。

【问题讨论】:

    标签: ios automated-tests appium apple-id libimobiledevice


    【解决方案1】:

    现在 Xcode 9 提供的一个选项是新的多应用程序测试。现在,您可以在 XCUI 测试期间根据其捆绑标识符 XCUIApplication(bundleIdentifier: "com.MEGACORP.xyz") 调用系统上的任何应用程序。它们涵盖了 WWDC 会话 409 - What's New in Testing 中的新 API 和示例 - 值得一看。

    我已经使用新 API 编写了一些测试来退出被测应用并打开系统设置以在测试拆卸期间重置应用状态。在 question 中有一个所有系统捆绑包 ID 的列表。

    您的测试将从以下内容开始:

    let store = XCUIApplication(bundleIdentifier: "com.apple.AppStore")
    store.launch()
    

    【讨论】:

      猜你喜欢
      • 2015-06-19
      • 2017-03-09
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多