聊一聊在Airtest自动化中如何清除iOS后台应用

简介: 聊一聊在Airtest自动化中如何清除iOS后台应用

前言



不知道做iOS测试的同学有没有遇到过1个非常让人苦恼的问题:每次打开iOS应用的界面都是上次退出时的界面,应用初始页面不一致,导致脚本运行出现了各种问题。


但iOS平台并不支持 clear_app() 接口,所以无法像Android那样直接调用 clear_app() ,就能把应用进程杀掉。而 stop_app() 也只能把应用放到后台,下次再唤起应用时,初始页面依旧是上次退出时的页面。


所以究竟有没有什么办法可以清除iOS的后台应用,从而保证应用的初始页面一致呢?下文我们一起来探讨下。


清除iOS后台应用实践



既然没有接口可以给我们用来清除iOS的后台应用,那我们可以换一种解决思路,用Airtest模拟清理后台应用的行为:双击HOME键/从底部向上滑动,唤出多任务切换的界面,再通过向上滑动的动作,逐一清理后台应用。


但实践后发现,执行两次 keyevent("HOME") 并不能实现双击HOME键的效果;从底部向上滑动也不能如预期那样唤出多任务切换的界面。


那还有没有别的方式可以唤出多任务的界面呢?其实是有的,在我们最常见的苹果圆点样式的辅助功能按钮中,包含了1个名为 应用切换器 或者 多任务 的快捷功能。


1. 在辅助触控中设置应用切换器


我们在示例设备中依次找到 设置--通用--辅助功能--辅助触控 ,打开 自定顶层菜单 ,点击 自定 的图标,将其改成 多任务 ,此时单击苹果的圆点按钮,就可以看到里面已经出现了一个 多任务 的快捷键图标:


网络异常,图片无法展示
|


设置好之后,我们可以通过Airtest的点击脚本,轻松唤出多任务切换的界面:


网络异常,图片无法展示
|


2. 提高清除iOS后台应用脚本的兼容性


虽然上述脚本可以完成清除后台应用的工作,但实际在脚本编写和运行的过程中,很容易发现一些影响兼容性的问题:


苹果的圆点按钮在闲置时会变成透明的,所以截图时会把手机背景也连带着截进去,换设备执行的时候容易找不到图或者匹配出错误结果:


网络异常,图片无法展示
|


这个问题我们可以在设置中把这个圆点按钮的闲置透明度改成100%,即闲置时,圆点按钮也不会变成透明的效果:


网络异常,图片无法展示
|


把其余待测iOS设备的圆点按钮透明度都设置为100%,即闲置时圆点按钮也是全黑不透明的,此时的截图脚本就可以在更多机器上成功运行了:


网络异常,图片无法展示
|


不同型号的iOS任务切换器图标不全相同


比如iPhone 6的任务切换器图标:


网络异常,图片无法展示
|


iPhone 7 plus的多任务图标:


网络异常,图片无法展示
|


不同型号的苹果设备,存在不一样的应用切换器图标,那我们总不能换一台设备就改一次点击切换器图标的脚本把?当然不是。更好的解决办法是,我们把这几种图标保存在1个列表里面,只要列表中的任意1个图标出现了,我们就进行点击操作:


网络异常,图片无法展示
|


这样即使更换了iOS设备,应用切换器的图标不一致了,我们还是可以使用同一个脚本:


网络异常,图片无法展示
|


小结



关于清除iOS后台应用的教程就讲解到这里,解决思路由我们的airtest用户cy hus提供。

相关文章
|
26天前
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
105 4
|
18天前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
1月前
|
运维 应用服务中间件 Linux
自动化运维的利器:Ansible在配置管理中的应用
【10月更文挑战第39天】本文旨在通过深入浅出的方式,向读者展示如何利用Ansible这一强大的自动化工具来优化日常的运维工作。我们将从基础概念讲起,逐步深入到实战操作,不仅涵盖Ansible的核心功能,还会分享一些高级技巧和最佳实践。无论你是初学者还是有经验的运维人员,这篇文章都会为你提供有价值的信息,帮助你提升工作效率。
|
15天前
|
运维 监控 持续交付
自动化运维在现代数据中心的应用与实践####
本文探讨了自动化运维技术在现代数据中心中的应用现状与实践案例,分析了其如何提升运维效率、降低成本并增强系统稳定性。通过具体实例,展示了自动化工具如Ansible、Puppet及Docker在环境配置、软件部署、故障恢复等方面的实际应用效果,为读者提供了一套可参考的实施框架。 ####
|
1月前
|
jenkins 测试技术 持续交付
探索自动化测试在持续集成中的应用与挑战
本文深入探讨了自动化测试在现代软件开发流程,特别是持续集成(CI)环境中的关键作用。通过分析自动化测试的优势、实施策略以及面临的主要挑战,旨在为开发团队提供实用的指导和建议。文章不仅概述了自动化测试的基本原理和最佳实践,还详细讨论了如何克服实施过程中遇到的技术难题和管理障碍,以实现更高效、更可靠的软件交付。
|
23天前
|
机器学习/深度学习 人工智能 测试技术
探索自动化测试框架在软件开发中的应用与挑战##
本文将深入探讨自动化测试框架在现代软件开发过程中的应用,分析其优势与面临的挑战。通过具体案例分析,揭示如何有效整合自动化测试以提升软件质量和开发效率。 ##
|
27天前
|
运维 监控 安全
自动化运维的利剑:Ansible在现代IT架构中的应用
在数字化浪潮中,企业对IT系统的敏捷性和可靠性要求日益提高。Ansible,一种简单但强大的自动化运维工具,正成为现代IT架构中不可或缺的一部分。它通过声明式编程语言YAM,简化了系统配置、应用部署和任务自动化的过程,显著提升了运维效率和准确性。本文将深入探讨Ansible的核心特性、应用场景以及如何有效整合进现有IT环境,为读者揭示其在自动化运维中的实用价值和未来发展潜力。
|
1月前
|
敏捷开发 监控 jenkins
探索自动化测试框架在敏捷开发中的应用与优化##
本文深入探讨了自动化测试框架在现代敏捷软件开发流程中的关键作用,分析了其面临的挑战及优化策略。通过对比传统测试方法,阐述了自动化测试如何加速软件迭代周期,提升产品质量,并针对实施过程中的常见问题提出了解决方案。旨在为读者提供一套高效、可扩展的自动化测试实践指南。 ##
41 9
|
29天前
|
运维 Devops 应用服务中间件
自动化运维的利剑:Ansible在现代IT架构中的应用
【10月更文挑战第42天】本文旨在揭示自动化运维工具Ansible如何革新现代IT架构,通过简化配置管理和部署流程,提升效率和可靠性。我们将探索Ansible的核心功能、语言特性以及其在DevOps文化中的角色。文章还将展示如何借助Ansible构建模块化和可重用的配置代码,实现快速迭代与部署,并确保系统一致性。通过阅读本文,运维人员将了解如何利用Ansible优化日常任务,加速产品上线速度,同时提高系统的稳健性。
35 5