Как открыть url в Safari и вернуться к приложению под UITests в Xcode 7?

Это мой пользовательский вид, где "LondonStreet" кнопка.

enter image description here

когда я нажимаю эту кнопку, я получаю url-адрес и открываю его в Safari (он работает). Тогда я могу вернуться, используя (Она также работает).

enter image description here

проблема в том, когда я пытаюсь проверить это в UITests.

itemsTable.cells.elementBoundByIndex(0).buttons["addressButton"].tap() //press the button to open link in Safari

вместе с этой строки:

app.statusBars.buttons["Back to Wishlist"].tap() //go back, doesn't work, although it was recorded by Xcode itself.

ошибка:

тестирование пользовательского интерфейса Failure-не удалось получить скриншот в течение 5s.

а также в проблема навигатор

ошибка тестирования пользовательского интерфейса-не удается быстро обновить состояние приложения.

enter image description here

2 ответов


тестирование пользовательского интерфейса не может взаимодействовать ни с чем за пределами вашего приложения. В вашем сценарии платформа больше не может ничего делать после открытия приложения Safari.

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

print(XCUIApplication().debugDescription)

начиная с iOS 11 вы можете взаимодействовать с другими приложениями с помощью инициализатора XCUIApplication(bundleIdentifier:).

чтобы вернуться к вашему приложению, вы должны сделать что-то вроде:

let myApp = XCUIApplication(bundleIdentifier: "my.app.bundle.id")
let safari = XCUIApplication(bundleIdentifier: "com.apple.mobilesafari")

// Perform action in your app that opens Safari

safari.wait(for: .runningForeground, timeout: 30)
myApp.activate() // <--- Go back to your app