airtest自动化测试教程 airtest图片识别原理

1. Airtest进阶


1.1 提升脚本成功率


我们使用了图像识别的技术在当前游戏画面中查找对应的图片,然而图像识别并不能达到人眼识别的准确度,它只能尽可能地去寻找一个最符合预期的结果 。这就经常导致了我们认为不存在的图片,它认为存在,或者我们认为在画面上一眼就能找到的内容,Airtest认为不存在。


也就是说,图像识别不是万能的!!!它是有 成功率 的,假设一个脚本里有10张图片,每张图片的识别成功率都能达到95%之高,10张图片全部都正确识别的概率也不过60%而已 。更何况,有许多图片因为种种原因,识别成功率远远低于95%这个值,要想脚本运行100%正确就更难了


改进点:


1. 截图时尽量 保证截取的图像辨识度高、独立清晰,例如截取一个按钮图像时,尽量不要带上太多的嘈杂
背景图案,避免在背景变化后难以成功识别的问题
【airtest自动化测试教程 airtest图片识别原理】

2. 图像识别使用的算法 更适合用来识别按钮类(带边框)、图标类的图像,仅仅单独截取几个文字的识别成功率很低,请尽量调整图片截取内容来达到较好的识别效果,避免截取识别效果较差的内容

airtest自动化测试教程 airtest图片识别原理

文章插图


3. Airtest会尽可能地尝试适配 不同分辨率 的手机,但是在某些游戏上可能有自定义的分辨率适配规则,可以
根据自己游戏的分辨率适配情况来自定义,参考:
https://airtest.doc.io ease.com/IDEdocs/airtest_framework/1_script_settings/


4. 若有大量重复的、非常相似的图标堆叠在一起时,有可能识别效果不佳,在我们眼中也许每一个图标上面的文字是不一样的,然而在Airtest的眼中它们实在是太相似了 。我们可以尝试修改截图,借助一些其他的背景样式,修改成辨识度更高的图片


5. 尽管AirtestIDE提供了便捷的自动录制功能,能够直接将当前所有操作一步一步转换成代码,但是这种情况下自动截取的图片往往不太理想,需要手工再对截图进行调整


1.2 脚本相关设置


1.2.1 脚本代码修改属性


假如直接使用文本编辑器打开我们所编辑的Airtest脚本目录里的同名py文件,可以看到,每张图片都由类似这样的语句组成:
Template(r"tpl1532588127987.png", record_pos=(0.779, 0.382), resolution=(407, 264))


直接在里面加入需要修改的值即可
Template(r"tpl1532588127987.png", record_pos=(0.779, 0.382), resolution=(407, 264), threshold=0.6, target_pos=5, rgb=False)


图像识别阈值threshold(浮点类型):
threshold是用来判定一张图片识别是否成功的阈值,例如一张图片识别到的匹配度是0.65,
而我们设置的threshold为0.7的话,Airtest会认为匹配失败,从而进行下一次匹配 。
通常来说,threshold设置得越高,图像识别的精度越高,但成功率也会有所降低,请根据自己的实际情况酌情设置 。
取值范围为0~1之间,[0, 1],默认值是0.7 。


图像点击位置target_pos(整型):
当识别出一张图像后,Airtest将会默认去点击图像的正中心位置,

有时我们希望它识别出图片后点击其他位置,可以通过修改target_pos属性来实现
airtest自动化测试教程 airtest图片识别原理

文章插图
在上图中,我们希望点击中间选项的“升级”按钮,不希望点到别的选项去,而只截出升级按钮不能满足我们的需求 。


推荐阅读