此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途
顶着同学们日常催更的压力,我们的 AirtestProject 终于又更新啦!这次不仅仅 更新了 Airtest 和 poco 这两个测试框架,AirtestIDE 也有不少的优化 ,详细的更新内容同学们可以阅读下文。
Airtest 更新了 2 个版本,包含多个接口的优化和众多 bug 修复。
① 新增对 Android11
的支持
② 修改了用于在脚本中记录 log 的 log()
接口,支持 4 个参数:
args
, 可以是字符串或是 traceback
对象,现在还支持传入非字符串,并且对 py2 做了一下兼容。假如传入的是 traceback
对象,将会自动在报告中标记为报错步骤,否则就是显示正常的 log
内容。timestamp
, 参数可以自定义当前这条 log
的时间戳,默认为当前时间(在记录一些长时间的回调中获取到的 log
时,原本默认使用写入本条 log
的时间,但是可能需要修改为 log
产生的时间,比如几分钟前)desc
, 自定义一个 log
标题,在报告中有更好的展示效果snapshot
, 是否需要截取一张当前的屏幕图像并显示到报告中,方便查看。(同时,因为这个参数的加入,现在 airtest 脚本如果因为执行 Poco 语句失败报错而终止时,能够额外截取一张当前画面,方便大家排查问题。)示例:
data = {"test": 123, "time": 123456}
# 第一条log,步骤名显示title,截取一张屏幕截图
log(data, timestamp=time.time(), desc="title", snapshot=True)
# 第二条log,标记为报错步骤并截取一张屏幕截图
try:
1/0
except Exception as e:
log(e, snapshot=True)
# 第三条log,显示传入的字符串
log("中文")
③ 新增一个用于指定截图最大尺寸的设置:ST.IMAGE_MAXSIZE
。假如设置为 1200,则最后保存的截图长宽都都不会超过 1200,有利于进一步缩小截图的图片尺寸。
同时,支持自定义单张截图精度和全局截图精度:
snapshot
接口支持传入 quality
参数,单独指定本次截图的图像精度ST.SNAPSHOT_QUALITY = xx
设置全局截图精度,在运行脚本时,报告的步骤截图也会采用这个数值进行压缩示例:
# 设置截图质量为30
ST.SNAPSHOT_QUALITY = 30
# 设置截图尺寸不超过600*600,如果不设置,默认为原图尺寸
ST.IMAGE_MAXSIZE = 600
# touch语句保存的截图质量为30, 尺寸不超过600*600
touch(xx)
# 本条语句截图质量为90
snapshot(filename="test.png", msg="test01", quality=90)
# 截图质量为90,尺寸不超过1200*1200
snapshot(filename="test2.png", msg="test02", quality=90, max_size=1200)
# 不设置的情况下,默认采用ST中的全局变量的数值
snapshot(msg="test12")
④ playground/android_motionevents.py
里面提供了一些 Android 自定义手势 的示例代码,现在直接调用 dev.touch_proxy.perform
接口就可以传入写好的 MoveEvent
列表来进行自定义的滑动了(以前是调用 dev.minitouch.perform
,如果是安卓 10 就会不兼容)。
示例:
from airtest.core.android.touch_methods.base_touch import *
# tap with two fingers
multitouch_event = [
DownEvent((100, 100), 0),
DownEvent((200, 200), 1), # second finger
SleepEvent(1),
UpEvent(0), UpEvent(1)]
device().touch_proxy.perform(multitouch_event)
① iOS 修复了上个版本 stop_app()
失效的问题
② 回退了屏幕录制代码到 1.0.27 之前的版本,取消使用 yosemite.apk
来录屏,避免每次重装过 yosemite.apk
后必须要手工赋予录屏权限才能录屏的问题
③ 在一些无法使用 minicap
的手机上,虽然指定了 Javacap
模式也能截屏,但是在调用 get_display_info
的时候依然调用到 minicap.get_display_info
,如果没有指定 ori_method
为 adbori
,会导致脚本无法运行成功。 因此修改为假如获取屏幕信息失败,自动调整 为使用 adbori
模式来获取当前屏幕信息。
④ 在脚本中一旦对同一台手机运行了不止一次 connect_device
接口,并指定了不同的设备连接参数时,G.DEVICE
不会更新到最新参数创建出来的设备对象,导致部分手机可能连接失败。现在改为每次更新设备对象时,也会自动更新一下 G.DEVICE
⑤ 修复了在高版本 Android 手机上,get_ip_address()
接口不能正确获取到手机 IP 的问题
⑥ 去掉了 assert_exists()
接口使用特殊的 ST.THRESHOLD_STRICT
值作为找图阈值的设定。假如之前设置了 ST.THRESHOLD_STRICT
将会继续沿用该数值,但是如果没有设置的话,默认与其他图片一样都使用指定的 threshold
参数,或是全局的 ST.THRESHOLD
,这样能够方便统一设置和管理,也不容易造成误解。
AirtestIDE 更新到 1.2.6 版本,主要优化了设备连接窗口部分的内容。
① 全面修改了设备连接模块的逻辑,同时 优化了 windows 下窗口连接的体验 ,如果在连接手机、windows 窗口时遇到 BUG,请向我们反馈~
反馈渠道:
官方答疑 Q 群:1017250147
官方公众号留言:AirtestProject
GitHub 上提 issue:https://github.com/AirtestProject/AirtestIDE/issues
② Airtest 更新到 1.1.6,支持 Android11 手机,并且对多个接口进行了修改,以及多个 BUG 修复,请务必查看此链接确认所有更新内容:https://github.com/AirtestProject/Airtest/releases/tag/v1.1.5
③ 修复了使用 IDE 进行 Poco 连接的部分问题,并且在 Poco 启动失败时,不会强制重装 Poco,而是尝试杀掉其他冲突的进程
① 如使用 IDE 自带的 python 环境,则只需将旧版 AirtestIDE 更新到最新的 1.2.6 即可。(特别注意:覆盖更新之前请检查脚本是否保存在 IDE 的安装路径内,如是的话,请将脚本转移到其它非 IDE 安装路径保存,避免覆盖更新之后,造成 IDE 安装路径内的脚本丢失!!!)
② 如使用的是本地的 Python 环境,请使用 pip install -U airtest
和 pip install -U pocoui
命令,将这两个库到最新版本
Airtest 官网:airtest.netease.com/
Airtest 教程官网:airtest.doc.io.netease.com/
搭建企业私有云服务:airlab.163.com/b2b