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

iOS 11.2下Appium重启APP无法保留关闭位置问题求助

iOS Appium 重启应用回到关闭位置的解决方案

首先可以明确说:iOS端是可以实现关闭应用后从原位置重启的,但Appium在iOS上的行为和Android有差异,再加上你用的Appium 1.2.7版本比较老旧(2017年的版本),对iOS 11的支持存在一些兼容性问题,这可能是你遇到问题的主要原因。下面是具体的解决方案:


1. 优先升级Appium版本

Appium 1.2.7对XCUITest(iOS 10+必须使用的自动化框架)的支持还不完善,很多状态保留的bug在后续版本中已经修复。建议升级到较新的稳定版,比如1.22.x或更高版本,这能解决大部分兼容性问题。

2. 配置正确的Capabilities

在初始化Driver时,除了noReset: true和fullReset: false,还需要添加几个iOS特有的参数:

  • automationName: 'XCUITest':iOS 10+必须使用XCUITest作为自动化引擎,旧版本Appium可能默认用已废弃的UIAutomation,这会导致状态无法保留
  • keepKeyChains: true:保留应用的钥匙串数据,帮助恢复应用的登录/会话状态
  • shouldUseSingletonTestManager: true:确保测试管理器的单例模式,避免重置应用状态

示例Capabilities(Python为例):

desired_caps = {
    'platformName': 'iOS',
    'platformVersion': '11.2',
    'deviceName': 'iPhone 7',
    'app': '/path/to/your/app.app',
    'noReset': True,
    'fullReset': False,
    'keepKeyChains': True,
    'automationName': 'XCUITest',
    'shouldUseSingletonTestManager': True
}

3. 尝试后台唤醒替代完全关闭

如果closeApp() + launchApp()的方式还是无法保留状态,可以试试将应用放到后台而非完全杀死,再唤醒的方式:

# 将应用放到后台(-1表示持续后台,直到唤醒)
driver.runAppInBackground(-1)
# 通过Bundle ID唤醒应用
driver.activateApp('com.your.app.bundle.id')

这种方式更贴近用户真实操作(按Home键后台),大部分应用会保留之前的页面状态,比完全关闭后重启更可靠。

4. 检查模拟器设置

确保你的iPhone 7模拟器没有被自动重置:

  • 手动打开模拟器,检查应用是否存在且状态正常
  • 避免在脚本中或测试工具中添加重置模拟器的操作(比如wipeSimulator这类参数)

如果按照上述步骤操作,应该就能实现iOS端关闭后从原位置重启应用的需求了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:33:34