在使用airtest编写自动化脚本时,由于识别算法并不是百分之百的准确,所以要尽可能的采用其他辅助方案来增加识别的准确率,进而提高识别的稳定性。来记录几个用过的比较好的提高准确率的方式。
1. 循环识别判断
通常我们都不需要对脚本执行的时长做要求,更关注的是结果,所以可以采用依次识别判断的方式,示例如下:
list = [截图1,截图2,截图3......]
一般来说,执行的机型是相对固定的,因此可以将不同分辨率的手机中的截图依次保存判断,可以一劳永逸,准确度也会比单个图片进行缩放效果更好,因为关键因素是不同类型的手机,可能字体也会有差异。
2. 对关键步骤增加颜色识别
为了执行效率的提高,通常Airtest识别时默认是采用灰度图像匹配的,而我们通常更追求准确而非速度,外加有些页面上的一些匹配文字也不止一组。所以此时可以加上颜色匹配,来提高识别精度,以防出现识别到其他颜色的相同文字的情况。以touch为例,其他也是相同的方式:
touch(Template(r"tpl1629971466235.png", rgb=True, record_pos=(-0.254, -0.238), resolution=(1022, 673)))
rgb为True即可
3. 识别操作的替代
如果有其他的命令可以替代屏幕上的操作,优先选用其他命令,例如:
## 用命令代替
touch
start_app("com.netease.cloudmusic")
4. 执行之间sleep的穿插
执行之间多穿插sleep,有利于给每个操作的执行留出缓冲,以防出现准备不及的情况,例如页面未加载完成,操作未完成等。
5. 多阈值设定
可以根据不同的需要实际设定特定的匹配阈值。
from airtest.core.api import *
# airtest.core.api中包含了一个名为ST的变量,即为全局设置
ST.THRESHOLD = 0.8
# 未指定图片threshold,默认使用ST.THRESHOLD中的0.8
touch(Template(r"tpl1532588127987.png", record_pos=(0.779, 0.382), resolution=(407, 264)))
# 手工指定图片threshold,以图片设置的0.6为准
touch(Template(r"tpl1532588127987.png", record_pos=(0.779, 0.382), resolution=(407, 264), threshold=0.6))
欢迎关注我的公众号【测试开发备忘录】,一起沟通交流~