Appium 8+版本移除closeApp/launchApp后,同会话内如何关闭重启App?
Appium 8+ 同会话内关闭重启App的替代方案
Appium 8及以上版本移除了原有的launchApp()和closeApp()方法,要在同一会话内实现多次关闭重启App,可采用以下几种替代方案:
官方推荐API替代
这是最贴合原逻辑的方案,使用Appium提供的terminateApp()和activateApp()方法实现:
Python 代码示例
关闭应用
# Android 传入应用包名 driver.terminate_app("com.example.demo") # iOS 传入Bundle ID driver.terminate_app("com.example.demo")
重启激活应用
# Android driver.activate_app("com.example.demo") # iOS driver.activate_app("com.example.demo")
Java 代码示例
关闭应用
// Android driver.terminateApp("com.example.demo"); // iOS driver.terminateApp("com.example.demo");
重启激活应用
// Android driver.activateApp("com.example.demo"); // iOS driver.activateApp("com.example.demo");
系统命令补充方案
如果官方API无法满足特殊场景需求,可直接调用系统层面的命令实现:
Android 端(ADB命令)
- 强制关闭应用:
adb shell am force-stop com.example.demo - 启动应用:
adb shell monkey -p com.example.demo -c android.intent.category.LAUNCHER 1
在代码中可通过执行系统命令的方式调用,比如Python用subprocess模块,Java用Runtime.getRuntime().exec()执行。
iOS 端(Xcrun命令)
- 终止应用:
xcrun simctl terminate booted com.example.demo - 启动应用:
xcrun simctl launch booted com.example.demo
注意事项
- 调用
terminateApp()时必须传入正确的包名(Android)或Bundle ID(iOS),否则会执行失败 activateApp()会直接将应用从后台唤醒或启动,若应用未被终止则直接切换到前台- 若需模拟用户手动划掉App的操作,可先调用
backgroundApp(3)将App后台停留3秒,再执行终止操作
内容的提问来源于stack exchange,提问作者Dinesh Kumar
相关产品推荐
相关产品推荐

