2015-09-11 2 views
3

Это мой пользовательский вид, где "LondonStreet" есть кнопка.Как открыть URL в Safari и вернуться в приложение под UITests в Xcode 7?

enter image description here

Когда я нажимаю эту кнопку, я получаю URL и открыть его в Safari (он работает). Затем я могу вернуться, используя кнопку "Back to Wishlist" (она также работает).

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. 

ошибка:

UI Testing Failure - Failed to get screenshot within 5s.

А также в выпуске Навигатор

UI Testing failure - Unable to update application state promptly.

enter image description here

ответ

7

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

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

print(XCUIApplication().debugDescription) 
+0

Я полагаю, вы правы :( –

5

Начиная с прошивкой 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 
+0

ответ является удивительным;) –