【更新公告】Airtest更新至1.3.0.1版本

简介: 【更新公告】Airtest更新至1.3.0.1版本

1. 前言

本次更新为Airtest库更新,版本提升至1.3.0.1版本,主要新增了一些iOS设备相关的装包等接口,以及封装了一些tidevice常用接口。更多更新详情,详见我们下文的描述。

2. 新增iOS设备接口

1)iOS安装接口:installinstall_app

对于 本地USB连接的iOS设备 ,新版本支持装包功能:

# 可以直接使用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卸载接口:uninstalluninstall_app

对于 本地USB连接的iOS设备 ,新版本支持卸载功能:

# 可以直接使用uninstall接口卸载包体
uninstall("com.netease.cloudmusic")
# 也可以先获取当前设备,用device().uninstall_app的方式卸载包体
dev = device()
dev.uninstall_app("com.netease.godlike")

3)列出iOS设备所有APP的接口:list_app

对于 本地USB连接的iOS设备 ,新版本支持列出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_clipboardset_clipboard

对于iOS设备(本地、远程均可),新版本支持剪切板功能:

#获取剪切板内容
text = get_clipboard()
print(text)
#设置剪贴板内容
set_clipboard("content")

注意:当iOS设备为 远程设备 、或者 安装了不止一个wda 时,需要指定具体的 wda_bundle_id 才能使用:

#获取剪切板内容
text = get_clipboard(wda_bundle_id="com.WebDriverAgentRunner.xctrunner")
#设置剪贴板内容
set_clipboard("content", wda_bundle_id="com.WebDriverAgentRunner.xctrunner")

3. 新增tidevice相关接口

针对本地USB接入的iOS设备,Airtest结合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

可以参考:github.com/AirtestProj…

代码执行效果示例:

>>> 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.")

image.png

5. using接口的改动

using 接口的作用是,支持在脚本中引用另外一个脚本,同时还能够让Airtest正确地读取到其他脚本中的图片路径。

假设目录结构如下:

demo/
    foo/
        bar.air
    baz.air
    main.py

如果我们希望在 main.py 中引用 foo/bar.airbaz.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. 如何更新

因本次更新仅更新了Airtest库,所以同学们目前只能在自己本地python环境中,将Airtest更新到最新版本:

pip install -U airtest

对于使用AirtestIDE的同学,可以等我们发布1.2.16版本的IDE,或者在旧版本AirtestIDE中设置使用本地python环境,然后将本地python环境的Airtest库升级到最新版本即可。

image.png

8. 更新常见问题

如同学们在使用新版的Airtest时遇到了一些问题无法解决,特别是iOS新增接口相关的问题,可以通过此网站向我们的开发者快速提单:airtest.netease.com/issue_creat…

可以在标题中加入“Airtest1.3.0.1”之类的字眼,方便我们快速筛选和排查。

相关文章
|
19天前
|
Web App开发 运维 安全
2025年十大远程控制软件专业横评:十大主流工具深度解析与选型建议
2025年十大远程控制软件深度横评:从性能、画质、功能、跨平台及体验五大维度,全面解析连连控、AnyDesk、TeamViewer等主流工具。专业用户如何选?本文揭晓综合实力最强之选,助你高效远程协作。
|
10月前
|
存储 人工智能 Serverless
AI 短剧遇上函数计算,一键搭建内容创意平台
为了帮助更多内容创作者和企业快速实现 AI 短剧创作,函数计算 FC 联合百炼联合推出“AI 剧本生成与动画创作解决方案”,通过函数计算 FC 构建 Web 服务,结合百炼模型服务和 ComfyUI 生图平台,实现从故事剧本撰写、插图设计、声音合成和字幕添加到视频合成的一站式自动化流程。创作者只需通过简单操作,就能快速生成高质量的剧本,并一键转化为精美的动画。
714 110
|
4月前
|
人工智能 前端开发 测试技术
如何让AI帮你做前端自动化测试?我们这样落地了
本文介绍了一个基于AI的UI自动化测试框架在专有云质量保障中的工程化实践。
1971 21
如何让AI帮你做前端自动化测试?我们这样落地了
|
JSON 数据管理 关系型数据库
【Dataphin V3.9】颠覆你的数据管理体验!API数据源接入与集成优化,如何让企业轻松驾驭海量异构数据,实现数据价值最大化?全面解析、实战案例、专业指导,带你解锁数据整合新技能!
【8月更文挑战第15天】随着大数据技术的发展,企业对数据处理的需求不断增长。Dataphin V3.9 版本提供更灵活的数据源接入和高效 API 集成能力,支持 MySQL、Oracle、Hive 等多种数据源,增强 RESTful 和 SOAP API 支持,简化外部数据服务集成。例如,可轻松从 RESTful API 获取销售数据并存储分析。此外,Dataphin V3.9 还提供数据同步工具和丰富的数据治理功能,确保数据质量和一致性,助力企业最大化数据价值。
567 1
|
编解码 搜索推荐 虚拟化
Windows平台安装MacOS虚拟机 - VMware(结尾附视频)(下)
Windows平台安装MacOS虚拟机 - VMware(结尾附视频)
666 0
|
easyexcel Java 关系型数据库
厉害了!12秒将百万数据通过EasyExcel导入MySQL数据库中
【5月更文挑战第12天】厉害了!12秒将百万数据通过EasyExcel导入MySQL数据库中
518 1
|
传感器 数据采集 存储
以下是一个简化的环境监测系统工程概述,并附带有Python代码示例或详解。
以下是一个简化的环境监测系统工程概述,并附带有Python代码示例或详解。
|
缓存 开发工具 Android开发
Android App性能评测分析-启动时间篇
1、前言 随着项目版本的迭代,App的性能问题会逐渐暴露出来,而好的用户体验与性能表现紧密相关,性能问题从应用的启动优化开始,下面会根据实际app性能测试案例,进行app性能评测之启动时间的分析和总结。
4583 0
|
存储 移动开发 测试技术
苹果个人付费开发者证书申请及使用图文详解
上篇文章《iOS真机安装WebDriverAgent图文详解》中提到如果使用付费版开发者证书去编译安装WDA,那么就不需要在手机上点击信任,这样更方便自动化测试的执行,今天就给大家详细分享一下如何申请个人付费开发者证书以及如何使用。
2976 0
苹果个人付费开发者证书申请及使用图文详解
下一篇
oss云网关配置