有没有办法将应用程序发送到后台?与您如何调用XCUIApplication.terminate()
类似,我有一些UI元素可以在applicationDidBecomeActive(_:)
上进行测试。有谁知道这是否可能?
答案 0 :(得分:8)
我建议您查看XCUIDevice
。以下是按下主页按钮然后重新启动应用程序的方法
func testExample() {
// Has a nav bar.
XCTAssert(XCUIApplication().navigationBars.element.exists)
XCUIDevice().press(XCUIDeviceButton.home)
// Before Swift 3: XCUIDevice().pressButton(XCUIDeviceButton.Home)
XCUIApplication().launch()
// Navigationbar still there on second launch.
XCTAssert(XCUIApplication().navigationBars.element.exists)
}
答案 1 :(得分:5)
我刚刚成功尝试UIApplication.sharedApplication().performSelector("suspend")
。
dispatch_after(2, dispatch_get_main_queue(), {
// suspend the app after two seconds
UIApplication.sharedApplication().performSelector("suspend")
})
// Swift 4 version
UIApplication.shared.perform(Selector("suspend"))
答案 2 :(得分:4)
在Xcode 9.0中,Apple推出了XCUIApplication.activate()
。如果需要,activate()
将启动应用程序,但如果它已在运行,则不会终止它。因此:
func testExample() {
// Background the app
XCUIDevice().press(.home)
// Reactivate the app
XCUIApplication().launch()
}
答案 3 :(得分:0)
就我而言,我想使应用程序后台运行并在我之前离开的位置打开它。后台运行该应用程序:
XCUIDevice.shared.press(.home)
要重新打开我离开的应用程序:
XCUIApplication().activate()
使用XCUIApplication().launch()
重新启动应用程序会从新启动应用程序。
我正在使用Swift 4.2