这是我的自定义视图,其中"LondonStreet"
是一个按钮。
当我点击该按钮时,我会获取网址并在Safari中打开它(它可以正常工作)。然后我可以使用"Back to Wishlist"
按钮返回(它也有效)。
问题是当我尝试在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测试失败 - 无法在5秒内获取屏幕截图。
还有问题导航器
UI测试失败 - 无法及时更新应用程序状态。
答案 0 :(得分:31)
从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
答案 1 :(得分:8)
UI测试无法与应用程序之外的任何内容进行交互。在您的方案中,一旦您的应用程序打开Safari,框架就再也无法执行任何操作。
要验证这一点,请在Safari打开后尝试打印应用程序的层次结构。您会注意到Safari和导航栏中的任何内容都不会显示 - 您只能看到应用的信息。
print(XCUIApplication().debugDescription)