2015-09-11 29 views
3

這是我的自定義視圖,其中"LondonStreet"是一個按鈕。如何在Safari中打開url並返回到Xcode 7中UITests下的應用程序?

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測試無法與應用程序之外的任何內容交互。在您的場景中,一旦您的應用打開Safari,框架就不能再執行任何操作。

要驗證這一點,請嘗試打開Safari打開時應用程序的層次結構。您會注意到Safari和導航欄中都沒有顯示 - 您只會看到應用程序的信息。

print(XCUIApplication().debugDescription) 
+0

我想你是對:( –

5

在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 
+0

答案是真棒;) –

相關問題