
1. 前言
2. 新增iOS设备接口
1)iOS安装接口:install
、install_app
# 可以直接使用install接口,支持通过本地.ipa文件安装APP,也支持通过下载链接安装APP
install(r"D:\demo\test.ipa")
install("http://www.example.com/test.ipa")
# 也可以先获取当前设备,用device().install_app的方式装包
dev = device()
dev.install_app(r"D:\demo\test.ipa")
dev.install_app("http://www.example.com/test.ipa")
2)iOS卸载接口:uninstall
、uninstall_app
# 可以直接使用uninstall接口卸载包体
uninstall("com.netease.cloudmusic")
# 也可以先获取当前设备,用device().uninstall_app的方式卸载包体
dev = device()
dev.uninstall_app("com.netease.godlike")
3)列出iOS设备所有APP的接口:list_app
list_app("user")
里传入要列出的app类型,我们可以得到相应的app列表。参数可选
user/system/all
, 分别表示列出用户安装的app/系统app/全部app。返回值示例:
[('com.apple.mobilesafari', 'Safari', '8.0'), ...]
。
dev = device()
#列出并打印全部APP
all_app = dev.list_app("all")
print(all_app)
#打印系统APP
print(dev.list_app("system"))
#列出并打印用户安装的APP
user_app = dev.list_app("user")
print(user_app)
4)iOS剪切板功能:get_clipboard
、set_clipboard
#获取剪切板内容
text = get_clipboard()
print(text)
#设置剪贴板内容
set_clipboard("content")
wda_bundle_id
才能使用:
#获取剪切板内容
text = get_clipboard(wda_bundle_id="com.WebDriverAgentRunner.xctrunner")
#设置剪贴板内容
set_clipboard("content", wda_bundle_id="com.WebDriverAgentRunner.xctrunner")
3. 新增tidevice相关接口
TIDevice
对象,提供了几个常用接口如下:
-
devices
:列出USB连接的所有设备的UDID
列表 -
list_app
:列出手机上安装的应用列表,支持对类型进行筛选,包括user/system/all
-
list_wda
:列出手机上安装的所有WDA的bundleID
-
device_info
:获取手机信息 -
install_app
:安装ipa包,支持本地路径或URL -
uninstall_app
:卸载bundle_id
对应的包体 -
start_app
:启动bundle_id
对应的包体 -
stop_app
:停止bundle_id
对应的包体 -
ps
:获取当前的进程列表 -
ps_wda
:获取当前启动中的WDA列表 -
xctest
:启动WDA
>>> from airtest.core.ios.ios import TIDevice
>>> devices = TIDevice.devices()
>>> print(devices)
['10da21b9091f799891557004e4105ebab3416cb9']
>>> udid = devices[0]
>>> print(TIDevice.list_app(udid))
[ ('com.230316modified.WebDriverAgentRunner.xctrunner', 'wda-Runner', '1.0'),]
>>> print(TIDevice.list_app(udid, "system"))
[('com.apple.calculator', 'Calculator', '1.0.0'),]
>>> print(TIDevice.list_wda(udid))
['com.test.WebDriverAgentRunner.xctrunner']
>>> print(TIDevice.device_info(udid))
{'productVersion': '12.4.8', 'productType': 'iPhone7,2', 'modelNumber': 'MG472', 'serialNumber': 'DNPNW6EJG5MN', 'timeZone': 'Asia/Shanghai', 'uniqueDeviceID': '10da21b9091f799891557004e4105ebab3416cb9', 'marketName': 'iPhone 6'}
>>> TIDevice.start_app(udid, "com.apple.mobilesafari")
>>> TIDevice.stop_app(udid, "com.apple.mobilesafari")
>>> print(TIDevice.ps(udid))
[ {'pid': 215, 'name': 'MobileMail', 'bundle_id': 'com.apple.mobilemail', 'display_name': 'MobileMail'}]
>>> print(TIDevice.ps_wda(udid))
['com.test.WebDriverAgentRunner.xctrunner']
TIDevice.xctest
接口的执行示例如下:
import threading
wda_bundle_id = TIDevice.list_wda(udid)[0]
# 创建一个线程,执行xctest
t = threading.Thread(target=TIDevice.xctest, args=(udid, wda_bundle_id), daemon=True)
t.start()
time.sleep(5)
ps_wda = TIDevice.ps_wda(udid)
print(ps_wda)
time.sleep(5)
# 终止线程
t.join(timeout=3)
4. 新增错误类型NoDeviceError
NoDeviceError("No devices added.")
:

5. using接口的改动
using
接口的作用是,支持在脚本中引用另外一个脚本,同时还能够让Airtest正确地读取到其他脚本中的图片路径。
demo/
foo/
bar.air
baz.air
main.py
main.py
中引用
foo/bar.air
和
baz.air
,可以将项目根路径设置到
ST.PROJECT_ROOT
,或者确保项目根路径是当前工作目录:
# main.py
from airtest.core.api import *
ST.PROJECT_ROOT = r"D:\demo" # This line can be ignored if it is the current working directory
using("foo/bar.air")
using("baz.air")
foo/bar.air
中引用
baz.air
,可以这样写:
# foo/bar.air
from airtest.core.api import *
using("../baz.air")
6. 其它优化与改动
-
当Airtest脚本引发了 assert
异常时,退出码为20
,以便和其他报错区分 -
更新了 Yosemite.apk
,修复了一些稳定性问题 -
windows平台新增接口 set_focus
,与原先的set_foreground
功能相同
7. 如何更新
pip install -U airtest

8. 更新常见问题



本文分享自微信公众号 - AirtestProject(AirtestProject)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。