iOS - выход из Apple Store / восстановление устройства программным способом

Я автоматизирую тесты для параллельного запуска на нескольких устройствах. Я использую Appium для этого, и это прекрасно работает. Моя проблема в том, что у меня есть несколько тестовых случаев, которые требуют подключения устройства к определенным учетным записям Apple Store. Кроме того, возможно, что устройство уже вошло в другую учетную запись, и у меня нет возможности выйти из системы вручную. Мои тестовые примеры для входа в учетную запись, если к устройству не подключена учетная запись, уже работают нормально (в моем приложении я пытаюсь выполнить действие, которое требует Apple ID, появляется предупреждение, требующее входа в систему, и я уже автоматизировал процесс входа в систему). Проблема в том, что устройство уже зарегистрировано в другой учетной записи.

Мои два варианта:

  • Принудительный выход устройства из Apple Store
  • Создайте резервную копию устройства без регистрации и восстановите эту резервную копию перед моим тестом

Я не смог найти способ справиться с первым вариантом. Второй работает с помощью idevicebackup2 (библиотека от libimobiledevice). Проблема заключается в том, что после восстановления данных устройства появляется мастер настройки, и автоматически избавиться от него невозможно. Я пытался использовать cfgutils для удаления шагов мастера, но даже после удаления всех шагов мастер появляется просто ожидая подтверждения после восстановления.

Я хотел бы знать, есть ли способ перейти к первому варианту, или способ пропустить мастер установки во втором варианте, или, возможно, способ частично восстановить резервную копию (просто очистив данные Apple ID), чтобы не перезагружайте устройство и не зацикливайтесь на мастере снова. Заранее спасибо.

1 ответ

Один вариант, доступный теперь с Xcode 9, является новым тестированием мультиприложения. Теперь вы можете вызывать любое приложение в системе на основе его идентификатора пакета. XCUIApplication(bundleIdentifier: "com.MEGACORP.xyz") во время теста XCUI. Они рассказывают о новом API и примерах из 409 -й сессии WWDC - " Что нового в тестировании" - стоит посмотреть все это.

Я написал несколько тестов, используя новый API, чтобы выключить тестируемое приложение и открыть Системные настройки, чтобы сбросить состояние приложения во время завершения теста. В этом вопросе есть список всех системных идентификаторов.

Ваш тест начнется с чего-то вроде:

let store = XCUIApplication(bundleIdentifier: "com.apple.AppStore")
store.launch()
Другие вопросы по тегам