Appium 3.x 实战笔记:APP后台切换与关闭的新版正确写法(适配Python Client 5.x)
前言
本文为Appium移动端自动化学习笔记,针对Appium 3.x + Appium-Python-Client 5.x版本,梳理「APP置于后台」「强制关闭APP」两个常用操作的标准实现方式。
老版本客户端中driver.background_app()、driver.close_app()等直接调用方法已被移除,新版统一通过mobile:协议执行,本文所有代码均基于雷电9(安卓9)环境实操验证,适合新手复习避坑。
本文为个人原创学习笔记,发布于CSDN仅作技术交流;Appium遵循Apache 2.0开源协议。
一、将APP置于后台(backgroundApp)
功能说明
模拟用户按Home键,把当前前台APP切到后台运行,不会杀死进程;可设置后台停留时长,到期自动切回前台,常用于测试APP前后台切换、生命周期场景。
新版正确写法
# seconds=3 表示后台停留3秒后自动切回前台driver.execute_script("mobile: backgroundApp",{"seconds":3})参数说明
seconds:后台停留的秒数- 填正整数:停留对应秒数后,自动把APP切回前台
- 填
0:直接切到后台,不会自动切回,需要手动重新启动APP
二、强制关闭指定APP(terminateApp)
功能说明
彻底杀死目标APP的进程,等同于手动在多任务界面划掉APP;关闭后Appium与设备的连接依然保留,后续可继续执行其他操作。
新版正确写法
# 替换引号内的包名,即可关闭对应APPdriver.execute_script("mobile: terminateApp",{"appId":"com.android.settings"})扩展写法:关闭当前前台APP
不想硬编码包名时,可以先获取当前前台APP的包名,再执行关闭,适合通用工具脚本。
current_pkg=driver.current_package driver.execute_script("mobile: terminateApp",{"appId":current_pkg})三、完整可运行示例代码
以下代码可直接复制运行,实现「打开系统设置 → 切到后台3秒 → 自动切回 → 强制关闭设置APP」的完整流程。
importtimefromappiumimportwebdriverfromappium.options.commonimportAppiumOptions# 配置参数caps={"platformName":"Android","appium:platformVersion":"9","appium:deviceName":"25102RKBEC","appium:automationName":"UiAutomator2","appium:appPackage":"com.android.settings","appium:appActivity":"com.android.settings.Settings","appium:noReset":True,}# 创建驱动,连接Appiumoptions=AppiumOptions()options.load_capabilities(caps)driver=webdriver.Remote(command_executor='http://127.0.0.1:4723',options=options)# 1. 将APP置于后台3秒,自动切回driver.execute_script("mobile: backgroundApp",{"seconds":3})time.sleep(3)# 2. 强制关闭系统设置APPdriver.execute_script("mobile: terminateApp",{"appId":"com.android.settings"})# 结束会话driver.quit()四、新旧API对照表(复习速查)
| 老版本直接写法(已失效) | 新版标准写法 | 功能说明 |
|---|---|---|
driver.background_app(秒数) | driver.execute_script("mobile: backgroundApp", {"seconds": 秒数}) | 将APP切到后台 |
driver.close_app() | driver.execute_script("mobile: terminateApp", {"appId": "包名"}) | 强制关闭指定APP |
driver.terminate_app("包名") | 同上 | 同上 |
五、新手避坑总结
两个“关闭”一定要分清
mobile: terminateApp:只关闭APP进程,连接不断,后面还能继续操作设备driver.quit():断开整个Appium连接,会话彻底结束,只能放在脚本最后收尾
后台操作的等待注意
seconds参数本身就包含了等待逻辑,设置seconds=3时,代码会阻塞3秒等APP切回,不需要额外加time.sleep;如果设为0不自动切回,才需要自己控制等待时长。权限说明
后台切换、关闭APP这两个操作,不需要开启--relaxed-security权限,正常启动Appium即可运行;只有执行shell命令、安装卸载APK等操作才需要放开安全限制。
版权与参考说明
- 本文为个人原创学习笔记,所有代码与案例均为实操整理,发布于CSDN仅作技术交流;
- Appium 为开源自动化测试框架,遵循 Apache 2.0 开源协议,引用其官方规范仅作学习说明;
- 参考资料:Appium 官方文档