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
相关产品推荐
相关产品推荐

