AirtestProject Airtest 新年“首更”,1.1.7 版本抢先看!
此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途
前言
同学们催了很久的 关闭运行过程中截图的功能 和 python3.8、3.9 安装 airtest 库的支持 终于来啦!
除了这些功能以外,1.1.7 版本的 airtest 还跟新了很多小功能,并且修复了一系列的 bug,赶紧查看下文一睹为快吧!
新增功能
1.用户自由选择是否保存截图
新增自由选择是否保存脚本运行过程中截图的功能,支持用 2 种方式实现。
1)运行命令传入--no-image 参数
使用 airtest run xx.air
命令运行脚本时,可以传入 --no-image
这个新增的参数,就能够在任务运行过程中不再保存截图,示例:
airtest run test.air --device Android:/// --log logs/ --no-image
2)脚本中设置 ST.SAVE_IMAGE
如需在脚本中设置是否保存截图,我们可以使用 settings
新增的一个配置 ST.SAVE_IMAGE
,它的默认值为 True
, 如果改为 False
,就不保存截图,直到这个值再次设为 True
,示例:
from airtest.core.api import *
# 暂时关闭截图
ST.SAVE_IMAGE = False
touch((100, 100)) # 这条语句将不会保存当前画面图片
# 继续截图
ST.SAVE_IMAGE = True
touch((100, 100))
(未保存截图的 touch)
(保存了截图的 touch)
2.把 log() 内容 print 到终端查看
之前我们调用 log()
接口来保存对应 log 到 airtest 报告中,但不方便我们在终端查看。所以 1.1.7 版本也同时将它 print 到当前终端,方便同学们查看。
3.python3.8、3.9 支持安装 airtest
去掉了 requirements.txt
里 opencv-contrib-python
的版本依赖,目前 python3.8 和 python3.9 都能安装 airtest 库了。
注意:python3.9 如果安装完毕还不能使用 airtest,报错 ImportError: numpy.core.multiarray failed to import
,可以手工将 numpy
版本号降级至 1.19.3 就能使用了。
pip install -U numpy==1.19.3
4.start_recording() 新增控制视频清晰度的参数
Android 的录屏接口,start_recording()
修改了参数,增加了一个更简单的 bit_rate_level
参数,可以设置 1-5 的清晰度级别,默认为 1,数字越大会越清晰, 示例:
from airtest.core.api import connect_device, sleep
dev = connect_device("Android:///")
# Record the screen with the lowest quality
dev.start_recording(bit_rate_level=1)
sleep(30)
dev.stop_recording(output="test.mp4")
5.简化生成报告的 LogToHtml 的参数传递
重新整理了 LogToHtml
里面路径相关的参数 logfile
和 logdir
,现在支持通过修改 ST.LOG_DIR
和 ST.LOG_FILE
,来自主设置 log
文件夹和 log.txt
的文件名。修改完毕后,还可以直接用 LogToHtml
生成报告,同时简化了参数的传递,示例:
from airtest.report.report import LogToHtml
# 假设脚本为当前目录下的run.air, log目录为当前目录下的./log
# 默认将认为log存放在ST.LOG_DIR中,如果ST.LOG_DIR为空,则尝试寻找当前目录下的log文件夹
rpt = LogToHtml("run.air")
rpt.report()
自定义 ST.LOG_DIR
和 ST.LOG_FILE
的示例:
from airtest.core.helper import set_logdir
from airtest.report.report import *
new_logfile = "log123.txt"
new_logdir = "logs_new"
# set logfile = "logs_new/log123.txt
ST.LOG_FILE = new_logfile
set_logdir(new_logdir)
touch([100,100])
rpt = LogToHtml(r"D:/test/2234.air")
# LogToHtml将会默认选择ST.LOG_FILE作为logfile,ST.LOG_DIR作为log_root,生成对应的log.html内容
rpt.report()
bug 修复
1.修复在 log()
接口中,如果 desc
参数包含关键词 assert
,可能会导致步骤被错误认定为 assert
步骤的问题。
2.修复了报告中缩略图没有被正确缩小的 BUG(之前报告缩略图一般都只有 3-5K 大小,上个版本有问题,导致缩略图还是正常图片的大小)。
3.修复了在高版本 android 手机中,adb.start_app_timing
获取不到 app 启动时间的问题。
4.修复了 get_top_activity
在获取含有 $ 符号的包名时会报错的问题(java 允许命名时出现 $ 符号)。
5.adb.file_size
更换了获取文件大小的命令,兼容更低版本的 android 手机,顺便修改了 minitouch
和 maxtouch
的安装过程,更简洁一点。
6.修复了多线程同时截图时的 generator already executing
报错。在获取 sdk 版本时偶尔会失败,尝试增加重试次数,但是是否修复此问题还有待观察。
7.修复部分手机初始化 minitouch
失败的问题,因为会有额外的 log,导致正则匹配失败。
8.初始化 RotationWatcher
的时机改为在 get_display_info
的时候,避免在特殊情况下,因为它没有及时初始化,导致横竖屏转换时不能正确获取屏幕信息的问题。(假设连手机时是竖屏,开始运行后切换成了横屏,接下来运行纯 poco 脚本的 click
语句,就会导致点击位置横竖屏错误。因为 poco 语句在点击时不涉及截图,导致没有走到 rotationwatcher
的初始化逻辑里。)
9.Android.get_top_activity_name_and_pid
的功能与 get_top_activity
重复,因此删除一个。
如何更新
1.使用本地 python 环境的同学,可使用 pip install -U airtest
命令把本地 python 环境中的 airtest 库更新到最新版本。
2.使用 AirtestIDE 的同学,需要先把本地 python 环境的 airtest 库更新到最新版本之后,再在 IDE 的 选项-设置
中,自定义 python.exe 的路径。
3.另外如在安装 airtest 库的过程中,出现安装超时的报错,可以采用更换国内源的方式来安装:
# 使用阿里云
pip install airtest -i https://mirrors.aliyun.com/pypi/simple/
# 使用豆瓣源
pip install airtest -i https://pypi.doubanio.com/simple/
# 使用清华源
pip install airtest -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 其他源......
关于 airtest1.1.7 的更多更新详情,可以查看 github 上的 update 文档:https://github.com/AirtestProject/Airtest/releases/tag/v1.1.7
PS:为帮助新手同学更容易理解我们的 API 文档,我们 在一些核心 API 中新增了非常多的代码示例 供大家模仿学习,详情可以查看我们的官方 API 文档。(https://airtest.readthedocs.io/zh_CN/latest/all_module/airtest.core.api.html)
Airtest 官网:http://airtest.netease.com/
Airtest 教程官网:https://airtest.doc.io.netease.com/
搭建企业私有云服务:https://airlab.163.com/b2b
官方答疑 Q 群:654700783
呀~这么认真都看到这里啦,帮忙点击左下角的爱心,给我点个赞支持一下把,灰常感谢~