Airtest新年“首更”,1.1.7版本抢先看!

简介: Airtest新年“首更”,1.1.7版本抢先看!

前言



同学们催了很久的 关闭运行过程中截图的功能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.txtopencv-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 里面路径相关的参数 logfilelogdir ,现在支持通过修改 ST.LOG_DIRST.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_DIRST.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允许命名时出现符号的包名时会报错的问题(java允许命名时出现java符号)。


5.adb.file_size 更换了获取文件大小的命令,兼容更低版本的android手机,顺便修改了 minitouchmaxtouch 的安装过程,更简洁一点。


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文档:github.com/AirtestProj…


PS:为帮助新手同学更容易理解我们的API文档,我们 在一些核心API中新增了非常多的代码示例 供大家模仿学习,详情可以查看我们的官方API文档。(airtest.readthedocs.io/zh_CN/lates…


网络异常,图片无法展示
|

相关文章
|
4月前
|
JSON 自然语言处理 数据可视化
我用Python了B站3948评论,围观最近超火的“杀疯了!这就是国家队的美貌吗?”评论区
我用Python了B站3948评论,围观最近超火的“杀疯了!这就是国家队的美貌吗?”评论区
48 1
|
6月前
【2023Unity游戏开发教程】零基础带你从小白到超神02——新建第一个项目
【2023Unity游戏开发教程】零基础带你从小白到超神02——新建第一个项目
29 0
膜拜!清华大佬手撸多线程并发源码笔记Github上线3天星标35k+
你为什么要学习多线程?是因为理想吗?是因为热爱吗? 哦~原来是为了面试打基础、做准备啊!没错,这真的很现实!
膜拜!清华大佬手撸多线程并发源码笔记Github上线3天星标35k+
|
存储 Python
摸鱼宝典(一)——贪吃蛇游戏改版:贪吃龙 · 双龙戏珠小游戏(Python)
摸鱼宝典(一)——贪吃蛇游戏改版:贪吃龙 · 双龙戏珠小游戏(Python)
152 0
真香!端午节到来,我用Python画了几个粽子送给女票,女票差点吃了我的电脑...
真香!端午节到来,我用Python画了几个粽子送给女票,女票差点吃了我的电脑...
|
缓存 搜索推荐 容灾
清华学姐熬了一个月肝出这份32W字Linux知识手册,在 Github标星31K+ 中
清华学姐熬了一个月肝出这份32W字Linux知识手册,在 Github标星31K+ 中
109 0
清华学姐熬了一个月肝出这份32W字Linux知识手册,在 Github标星31K+   中
|
SQL 关系型数据库 MySQL
清华学姐熬了一个月肝出这份32W字Linux知识手册,在 Github标星31K+ 下
清华学姐熬了一个月肝出这份32W字Linux知识手册,在 Github标星31K+ 下
197 0
清华学姐熬了一个月肝出这份32W字Linux知识手册,在 Github标星31K+   下
|
开发工具
程序人生 - 祝贺登榜《开发工具领域内容榜》NO.24
程序人生 - 祝贺登榜《开发工具领域内容榜》NO.24
117 0
程序人生 - 祝贺登榜《开发工具领域内容榜》NO.24
|
Java 开发工具
程序人生 - 祝贺登榜《开发工具领域内容榜》NO.34
程序人生 - 祝贺登榜《开发工具领域内容榜》NO.34
123 0
程序人生 - 祝贺登榜《开发工具领域内容榜》NO.34

热门文章

最新文章