我想让我的应用程序转到后台,然后回到前台。
要使应用程序转到后台:XCUIDevice.shared().press(XCUIDeviceButton.home)
要终止应用(强制点按):XCUIApplication().terminate()
启动应用:XCUIApplication().launch()
问题:当我尝试关闭并打开应用时,launch()方法会从后台清除应用,它会新打开应用。
我看到了这个comment。但是无法在UI测试中弄清楚它。我正在使用Swift。需要帮助!!
答案 0 :(得分:8)
从Xcode 9和iOS 11开始,XCUIApplication()
有activate()
方法可用于重新启动应用。
正如勃兰登人所说,你可以按"主页按钮来设置应用程序,然后再次激活它以避免使用Siri:
XCUIDevice.shared.press(.home)
XCUIApplication().activate()
答案 1 :(得分:4)
从Xcode 8.3和iOS 10.3开始,现在可以使用Siri重新启动您的背景应用程序!
XCUIDevice.shared().press(XCUIDeviceButton.home)
XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Open {appName}")
请务必在测试套件文件的顶部添加@available(iOS 10.3, *)
。
答案 2 :(得分:1)
我已经关注了@randenbyers在模拟器上提到的内容。 在此之前,我手动激活了Siri服务。
XCUIDevice.shared().press(XCUIDeviceButton.home)
if #available(iOS 10.3, *) {
XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Open {Writer}")
XCTAssertTrue(XCUIApplication().tabBars.buttons["My Projects"].exists)
} else {
app.scrollViews.otherElements.buttons["Log Out"].tap()
assertionFailure("Fail because Siri service is not activated")
}
答案 3 :(得分:0)
在这里提出并回答了类似的问题 Possible to bring the app from background to foreground?
这就是我的 XCUITest 中的内容,它的工作原理就像一个魅力(xcode 10.1,测试设备为iPhone X 11.0)
func testWhatever() {
// You test steps go here until you need the background foreground to run
// To background the app
XCUIDevice.shared.press(XCUIDevice.Button.home)
// To bring the app back
XCUIApplication().activate()
// You test continues after background foreground has been done. }