很多新手同学在写自动化测试脚本的时候,打开、关闭、切换App的方式还是使用最基础的方式,也有同学在交流群内多次询问是否有打开、关闭、切换App以及清除App进程的方式、或接口,那么今天,我们详细来讲讲如何实现打开、关闭、切换App以及清除App进程操作。

打开、关闭、切换App以及清除App进程如何实现

打开App:start_app()

打开App的方式有很多,有通过poco点击应用图标的:

poco("手机管家").click()

也有通过Airtest图片点击:

但是以上两种方式,需要将App放置在当前界面上才能进行点击,但是我们可以直接调用Airtest的start_app()的接口,不用担心App放置的位置,可以直接打开App,只需要输入App的包名即可。

start_app("com.ss.android.article.news")

AI写代码

有些同学还不清楚我们如何获取我们想要的应用包名,点击AirtestIDE上自带的Android小助手可以查询,有关更多关于Android小助手的用法,可以点击查看我们的教程文档:

https://airtest.doc.io.netease.com/IDEdocs/3.2device_connection/7_android_assistant/

关闭App:stop_app()

同理,在退出App的时候,同学们可能会通过疯狂点击返回键退出App

keyevent("BACK")

但是操作不够优雅,我们可以使用stop_app()一键退出回到桌面

stop_app("com.taobao.taobao")
切换App

关于切换App界面的方式,大家比较关注这个点,对于Android跟iOS上是不一样的,在Android设备上,我们是可以通过ADB的方式去实现,可以省掉退出A应用,再打开B应用的一个步骤流程。

shell("monkey -p com.taobao.taobao -c android.intent.category.LAUNCHER 1")

但是在iOS设备上的时候,没有更好的捷径方式

  1. start_app("应用A")

  2. stop_app("应用A")

  3. start_app("应用B")

  4. stop_app("应用B")

清除后台

在测试完后,设备后台开了很多进程,这个会影响设备的流畅性,在Android设备上,我们可以通过打开App设备窗界面后,点击“一键清除后台”的按钮后,即可关闭全部后台进程了。

  1. dev = device()

  2. #一般Android设备可以从底部向上滑动唤出设备窗

  3. dev.swipe_along([(500, 2295),(500,1500),(500,1000), (500, 100)])

  4. #唤出设备窗后,当出现了“关闭所有最近打开的应用”控件,点击即可全部清除所有app后台

  5. if poco("com.huawei.android.launcher:id/clear_all_recents_image_button").exists():

  6. poco("com.huawei.android.launcher:id/clear_all_recents_image_button").click()

在iOS设备上清除应用后台进程,则需要打开App切换器,然后逐个上划删除

  1. #在部分机型或版本上,该辅助触控小圆点无法使用poco识别,所以使用图片识别比较稳妥

  2. touch(Template(r"tpl1715678885473.png", threshold=0.6999999999999997, record_pos=(0.403, 0.008), resolution=(1170, 2532)))

  3. #在进入APP切换器后,可以判断目前设备上打开了多少窗口,并通过滑动关闭

  4. while poco("AppSwitcherContentView").exists() and times > 0:

  5. swipe([0.5,0.8],[0.5,0.1])

  6. times -= 1

在Android设备上实操案例

结合上面的几个方式,我们用个小小的实操案例来看一下在Android上实现的效果

参考代码:

  1. # -*- encoding=utf8 -*-

  2. __author__ = "Airtest"

  3. from airtest.core.api import *

  4. auto_setup(__file__)

  5. from poco.drivers.android.uiautomation import AndroidUiautomationPoco

  6. poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

  7. #清理后台

  8. def clean_app():

  9.     dev = device()

  10.     #一般Android设备可以从底部向上滑动唤出设备窗

  11.     dev.swipe_along([(500, 2295),(500,1500),(500,1000), (500, 100)])

  12.     

  13.     #唤出设备窗后,当出现了“关闭所有最近打开的应用”控件,点击即可全部清除所有app后台

  14.     if poco("com.huawei.android.launcher:id/clear_all_recents_image_button").exists():

  15.         

  16.         poco("com.huawei.android.launcher:id/clear_all_recents_image_button").click()

  17.         

  18. if __name__ == "__main__": 

  19.     #打开今日头条

  20.     start_app("com.ss.android.article.news")

  21.     sleep(3.0)

  22.     

  23.     #滑动今日头条界面

  24.     for i in range(5):

  25.         swipe((500,2100),(500,500))

  26.         sleep(1.0)

  27.         

  28.     #通过ADB的方式,直接切换应用界面

  29.     shell("monkey -p com.taobao.taobao -c android.intent.category.LAUNCHER 1")

  30.     sleep(2.0)

  31.     

  32.     #滑动淘宝界面

  33.     swipe((500,2100),(500,500))

  34.     sleep(1.0)

  35.     

  36.     #关闭淘宝应用

  37.     stop_app("com.taobao.taobao")

  38.     sleep(1.0)

  39.     

  40.     #清除App后台

  41.     clean_app()

在iOS设备上的实操案例

我们来看一下在iOS设备上实现打开、关闭、切换App的效果

参考代码:

  1. # -*- encoding=utf8 -*-

  2. __author__ = "Airtest"

  3. '''

  4. 前置条件(十分重要):

  5. 请提前按下面的操作设置好

  6. 辅助功能-触控-辅助触控(打开)- 单点(App切换器)

  7. 将辅助触控的小圆球透明度设置为100%

  8. '''

  9. from airtest.core.api import *

  10. from poco.drivers.ios import iosPoco

  11. poco = iosPoco()

  12. import random

  13. #清理后台

  14. def ios_clear_app(times=100):

  15.     #在部分机型或版本上,该辅助触控小圆点无法使用poco识别,所以使用图片识别比较稳妥

  16.     touch(Template(r"tpl1715678885473.png", threshold=0.6999999999999997, record_pos=(0.403, 0.008), resolution=(1170, 2532)))

  17.     

  18. #在进入APP切换器后,可以判断目前设备上打开了多少窗口,并通过滑动关闭

  19.     while poco("AppSwitcherContentView").exists() and times > 0:

  20.         swipe([0.5,0.8],[0.5,0.1])

  21.         times -= 1

  22.     home()

  23.    

  24.     

  25. if __name__ == "__main__": 

  26.     

  27.     #打开库乐队

  28.     start_app("com.apple.mobilegarageband")

  29.     sleep(3.0)

  30.     

  31.     #随机点击五个坐标点

  32.     for i in range(5):

  33.         random_x = random.randint(1000,2500)

  34.         random_y = random.randint(200,900)

  35.         touch((random_x,random_y))

  36.         

  37.     sleep(3.0)

  38.     

  39.     #关闭库乐队

  40.     stop_app("com.apple.mobilegarageband")

  41.     sleep(3.0)

  42.     

  43.     #切换到iMovie

  44.     start_app("com.apple.iMovie")

  45.     sleep(3.0)

  46.     

  47.     home()

  48.     sleep(3.0)

  49.     

  50.     #开始清理后台

  51.     ios_clear_app()

小结

在本周课程中,我们介绍了打开、关闭、切换App,以及清除App后台的方式:

1、打开App:start_app()

2、关闭App:stop_app()

3、切换App:shell("monkey -p com.taobao.taobao -c android.intent.category.LAUNCHER 1")

4、清除App后台

以及在Android跟iOS设备上的不同效果。如果同学们在使用Airtest进行自动化测试的过程中,遇到了问题,或者有任何想要深入了解的知识点,欢迎在官方交流群里告诉我们或者提交issue。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐