一、前言
上节课我们分享了一批Airtest封装的Tidevice接口,是有关获取设备信息的,还没看到的同学可以戳这里复习一下。那么本周我们继续来看一下Airtest还封装了哪些Tidevice的接口吧~
二、Airtest封装的Tidevice接口
2.1 list_app(udid ,app_type='user')
:列出手机上安装的应用列表
通过list_app()
接口,我们可以查询本地所连接设备上安装的应用列表,同时该接口支持对类型进行筛选,其中括号内的参数udid
所填的是需要查询的设备udid
,app_type
的话,是可以传入需要列出的应用程序类型,包括 user/system/all
。
from airtest.core.ios.ios import TIDevice
print(TIDevice.list_app(udid, "system"))
2.2 install_app(udid,file_or_url)
:安装ipa包
通过install_app(udid,file_or_url)
可以直接安装ipa包体,支持本地路径或URL的传入,实现ipa包的直接安装。
from airtest.core.ios.ios import TIDevice
TIDevice.install_app(udid,r"D:\demo.ipa")
TIDevice.install_app(udid,"https://download")
2.3 uninstall_app(udid,bundle_id)
:卸载 bundle_id
对应的包体
通过使用uninstall_app(udid,bundle_id)
接口可以直接卸载掉不需要的包体,其中传入的数据包括设备的udid
、以及需要卸载的应用bundle_id
。
from airtest.core.ios.ios import TIDevice
TIDevice.uninstall_app(udid,"com.163.itest.h12")
2.4 start_app(udid,bundle_id)
:启动 bundle_id
对应的包体
通过使用start_app(udid,bundle_id)
接口可以直接通过bundle_id
打开对应的app或游戏,这样就不需要游戏或应用图标在桌面或某个指定页面。只需要传入设备的udid
以及应用或游戏的bundle_id
就可以实现直接开启应用
from airtest.core.ios.ios import TIDevice
TIDevice.start_app(udid,'com.apple.mobilecal')
2.5 stop_app(bundle_id)
:停止 bundle_id
对应的包体
通过使用stop_app(udid,bundle_id)
接口可以直接通过bundle_id
关闭当前打开的的app或游戏,这样就不需要通过点击home键或退出键去实现退出应用了。
from airtest.core.ios.ios import TIDevice
TIDevice.stop_app(udid,'com.apple.mobilecal')
2.6 ps(udid)
:获取当前的进程列表
通过ps(udid)
可以直接查询当前所连接设备上正在运行的进程列表,并将进程的pid
、name
、bundle_id
等以字典的形式展现出来,可以根据自己的需求去调用。
from airtest.core.ios.ios import TIDevice
print(TIDevice.ps(udid))
三、完整演示案例
综合上述的内容,我们用一个小小的案例来阐述一下使用的大概流程是怎么样的吧。可以看到,我们可以直接可以利用接口实现先装包-测试-测试完后直接卸载包体这一个流程。
参考代码:
# -*- encoding=utf8 -*-
__author__ = "Airtest"
from airtest.core.api import *
from airtest.core.ios.ios import TIDevice
auto_setup(__file__)
from poco.drivers.ios import iosPoco
poco = iosPoco()
#获取电脑所连接的iOS设备udid
devices = TIDevice.devices()
udid = devices[0]
# 安装测试包体
TIDevice.install_app(udid, r"./simpletest_resign.ipa")
sleep(3.0)
#此时查询一遍用户安装应用,确保app安装成功
print(TIDevice.list_app(udid, "user"))
#将刚下载好的应用打开
TIDevice.start_app(udid,'com.163.itest.h12')
sleep(2.0)
#输出当前设备的进程应用有哪些
print("当前设备上开启的进程有:{}".format(TIDevice.ps(udid)))
#进行简单测试
poco("点击测试").click()
touch(Template(r"tpl1722395968270.png", target_pos=8, record_pos=(0.0, 0.037), resolution=(750, 1334)))
#输入内容
poco("TextField").click()
text("Airtest")
#完成测试退出应用
TIDevice.stop_app(udid,'com.163.itest.h12')
sleep(3.0)
#将测试包体卸载
TIDevice.uninstall_app(udid,'com.163.itest.h12')
#此时再查询一遍用户安装应用,确保app卸载成功
print(TIDevice.list_app(udid, "user"))
四、小结
这节课我们主要是介绍了Airtest所封装好的tidevice一些接口以及他们所展现的效果:
1、list_app
:列出手机上安装的应用列表,支持对类型进行筛选,包括 user/system/all
2、install_app
:安装ipa包,支持本地路径或URL
3、uninstall_app
:卸载 bundle_id
对应的包体
4、start_app
:启动 bundle_id
对应的包体
5、stop_app
:停止 bundle_id
对应的包体
6、ps
:获取当前的进程列表
通过上述的封装接口,我们可以对电脑本地连接的iOS设备实现一整个装包测试的流程,当然,同学们也可以根据自己的需求去封装更多有关Airtest或者是tidevice的相关接口,我们也欢迎大家投稿一些自己封装好的函数、接口等,大家可以一起分享学习~
同时如果大家在使用过程中有一些新的使用方式或者遇到了问题,又或者有任何想要深入了解的知识点,欢迎在官方交流群(526033840)里告诉我们或者提交issue。