You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UI测试中如何无需重启应用,实现应用切换器的切出与切回?

在XCTest中实现不重启应用的应用切换器往返操作

iOS 15及以上版本(原生API支持)

Apple在iOS 15后为XCTest新增了直接调用应用切换器的API,完全无需重启应用:

// 打开应用切换器
XCUIDevice.shared.openAppSwitcher()

// 等待切换器加载完成后,切回当前应用
XCUIApplication().activate()

如果是全面屏设备,也可以用手势模拟更贴近真实操作:

// 从屏幕底部向上滑动并停留,唤起应用切换器
let mainWindow = XCUIApplication().windows.firstMatch
mainWindow.swipeUp(velocity: .slow)

// 切回当前应用
XCUIApplication().activate()

iOS 14及以下版本(模拟操作)

针对旧系统,只能通过模拟物理按键或手势来实现:

  • 非全面屏设备:双击Home键唤起切换器
XCUIDevice.shared.press(.home)
XCUIDevice.shared.press(.home)
// 切回应用
XCUIApplication().activate()
  • 全面屏设备:模拟向上滑动停留的手势
// 定位屏幕底部中间位置,长按后向上拖动唤起切换器
let bottomCenter = XCUIApplication().coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.9))
bottomCenter.press(forDuration: 0.5, thenDragTo: bottomCenter.withOffset(CGVector(dx: 0, dy: -200)))

// 切回当前应用
XCUIApplication().activate()

注意事项

为了保证操作稳定性,建议在唤起切换器后添加等待断言,确认切换器已加载:

let appSwitcherExists = NSPredicate(format: "exists == true")
expectation(for: appSwitcherExists, evaluatedWith: XCUIApplication().otherElements["AppSwitcher"], handler: nil)
waitForExpectations(timeout: 5, handler: nil)

内容的提问来源于stack exchange,提问作者Vinoth N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 09:12:47