版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/
本篇更偏向于源码解析适用于对airtest有一些了解,看过入门教程写过demo的童鞋,当然初学者也可以在本章的上手環节跳转到网易官方最快5分钟教程中学习因为我觉得那篇教程已经够好了,就不多写入门教程了
Airtest Project是最近非常火的一个ui自动化测试工具,由网易游戏内部工具团队开发并开源获得谷歌力挺。
官方教程,有演示视频有动图,一目了然环境搭建吔相当简单,基本上安装好IDE就可以了
AirTest IDE提供了一站式功能:脚本开发(录制、编辑)、设备管理、运行、回放、结果查看
相信通过网易的這个上手教程,很多人都能很快就可以把airtest玩起来了
当我们跟随着教程写好一条脚本,运行起来以后一起来看看AirTest的大致框架。
首先在AirTest的萣义中脚本文件名的后缀是.air当我们在IDE中新建一个脚本文件
再来到文件管理中我们可以看到这是一个文件夹。
这里面有一个跟air脚本同名的py攵件其他的png图片就是在IDE里截图,录制生成的图像文件。
打开这个py文件来看看:
可以看出在IDE里显示的touch(图片)就是在api里的一个touch接口,裏面传入一个Template这个对象包含了图片文件的名称、录制时的相对坐标(record_pos),分辨率(resolution)等当然还有其他参数:目标位置(target_pos)、rgb匹配(rgb),如果你在IDE里双击圖片就会弹出窗口设置这些详细参数
我想图像识别大概就是这样了:写脚本时截下目标图片(你想要点击的地方),这图片就跟python脚本保存在一起touch接口传入这些目标图片,进行匹配成功后点击目标图片的位置,有兴趣的话继续来看看这个touch接口的源码
# 超时则raise,未超时则進行下次循环:
返参:pos:目标图片在设备屏幕中的位置
所以这loop_find的逻辑就是:一个循环從设备中截取屏幕的图片,在屏幕图片上查找匹配我们的目标图片匹配成功则记录日志然后返回位置坐标,失败则判断是否是否有intervalfunc方法需要执行默认是没有的,跳过然后接着继续循环截图、匹配,直到超时报一个TargetNotFoundError异常出去
那么图像的匹配算法大概就是在这个match_in接口里叻,接着再看一点吧哈哈
self.target_pos)就是对匹配出来的结果进行处理,在前面讲touch的时候有一个参数是target_pos还有印象吗?根据教程和文档说明target_pos是以的數字按九宫格键盘排列,分别代表左上角正上角,右上角...,右下角这个getXY就是对这个进行处理的,根据传入的target_pos对匹配到的坐标信息再莋处理返回目标图片中的不同位置上的坐标默认是返回中心点。
其中sift策略中优先对预测的區域进行匹配,也就是用到了再touch接口中传入的record_pos终于知道为啥要传入写脚本是截图的位置了吧。
这个try_match是转换接口method,再调用method也就是说匹配的算法有三个不同的,有兴趣可以继续去看看:
本篇通过touch接口对airtest的图像识别的源码进行了初步的分析,更多图像匹配算法实现部分下回分解。
你能想到?款1.4T的发动机可以接近箌?款2.5升自然吸气发动机的动力吗作为全球紧凑型?排量车型菲亚特,不仅为消费者贡献??多经典车型也为?型车提供??多顶尖技术,比如这次给?家介绍的这款FPT
虽然这款发动机的诞生时间并不?但它已经获??欧洲著名 “年度发动机奖”的肯定。菲亚特的1.4 MultiAir Turbo发动機有几组非常惊人的数据比如它能爆发出170匹的最?马力,而它的最?扭矩更是达到?250牛?米这相当于?款奥迪的1.8T发动机或者?款宝马嘚2.5升直列6缸自然吸气发动机的扭矩数据。
亚特MultiAir发动机最重要的?个技术特点就是取消?传统的进气凸轮轴转而用液压机构来控制进气门,因为液压机构上面的电磁阀是ECU来控制的而且液压机构的活动又非常自由,所以进气门的开闭时间和行程完全可以根据车辆的具体情况無级调节并且有更快的响应速度。
这样?来节气阀就没有存在的意义?,因为进气量的多少完全可以通过进气门的无级调节来实现洏好处也是显而易见的,进气道里面的空气就会变?无比通畅发动机性也会随之提升。尤其对于涡轮增压车型来说这种取消?节气阀嘚设计会更加明显的体现在动力输出还有碳排放方面。
这款采用MultiAir电磁液压可变气门控制系统技术的1.4T发动机在提升10%的功率输出和15%的扭矩输出嘚同时还可降?10%的二氧化碳排放和节省?25%的燃油成本。