Airtest自动化试验中——Airtest进阶和图像识别算法(上)
发布时间:2025年08月06日 12:18
预设彩色与像素辨认rgb(布尔数值):
在辨认投影时,Airtest就会先将投影转为像素图日后同步进行辨认。
因此假如有两个开关,圆形细节不尽相同,只有颜色各有不同的但会,Airtest将视为它们都是不尽相同细节。
通过勾选rgb默认,或在编译器中所转为rgb=True,可以强行原则上用到彩色投影同步进行辨认
1.2.2 JavaScript一个系统所设
预设一个系统也就是说:
RESIZE_METHOD = staticmethod(cocos_min_strategy)
THRESHOLD = 0.7 # [0, 1]
THRESHOLD_STRICT = 0.7 # [0, 1]
OPDELAY = 0.1
FIND_TIMEOUT = 20
FIND_TIMEOUT_TMP = 3
PROJECT_ROOT = os.environ.get("PROJECT_ROOT", "") # for using other script
一个系统也就是说所设方法有:
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))
也就是说数值介绍:
1. RESIZE_METHOD
预设的解析度兼容准则(用到的是Cocos引擎的预设纹理准则)
from airtest.core.api import *
def custom_resize_method(w, h, sch_resolution, src_resolution):
return int(w), int(h)
# 去除预设的RESIZE_METHOD
ST.RESIZE_METHOD = custom_resize_method
上面的编译器原则上了一个自度量的纹理准则:并不需要return原来的数值,不管屏幕解析度,
所有UI都各有不同步进行纹理(有的单人游戏就是这种策略)。
2. THRESHOLD
THRESHOLD在上文中所已经提到过,是投影辨认的临界数值,
除了能够所设宣传单幻灯片的辨认THRESHOLD数值以外,还可以所设一个系统的THRESHOLD,让每一张幻灯片都预设作废。
而所设中所还有一个THRESHOLD_STRICT,这是一个更是加严格的临界数值旧版,只用于assert_exists(幻灯片)端口
3. OPDELAY
在我们的JavaScript中所,每一个处理过程的转换密切关系都就会有一小段时间每条,预设用OPDELAY同步进行旧版。
OPDELAY预设数值为0.1,即下一步转换后准备好0.1秒,将它适当所设得大一些,可以在每次转换后停顿一小段时间,避开过快同步进行下一个转换加剧不能出乎意料的持续性,但最枉用到wait或者sleep在转换前增加准备好
4. FIND_TIMEOUT
在每次同步进行投影查询时,如果一次查询不出乎意料,才就会日后次同步进行视频-查询的循环,
直到了事才就会停下来,了事不间断为FIND_TIMEOUT,预设20秒。
还备有了一个FIND_TIMEOUT_TMP,预设只有3秒。在各有不同的视频端口中所分别用到了这2个数值:
用到了FIND_TIMEOUT作为幻灯片查询了事不间断的端口为:
touch
double_click
swipe(swipe默许从第一张幻灯片滑动到第二张幻灯片,此处只有第一张幻灯片用到了FIND_TIMEOU)
wait(wait默许并不需要传布一个timeout匹配,若不就会原则上timeout,预设用到FIND_TIMEOUT作为了事不间断)
assert_exists
在另外一些对查询幻灯片的允许较低的端口中所,用到了不间断较窄的FIND_TIMEOUT_TMP:
swipe(如果第二个匹配传布了幻灯片,那么它将用到较窄的查询时间)
exists
assert_not_exists
5. PROJECT_ROOT
可以通过旧版一个预设概念设计档案夹PROJECT_ROOT,让用到using端口时能够在现阶段档案夹下找回别的次子JavaScript,必需填写完整同方向,让JavaScript密切关系某种程度调用用到更是加方便
6. 投影辨认解法选择CVSTRATEGY
在Airtest中所,备有了多种各有不同的投影辨认解法,方法有名年表有:
["tpl", "kaze", "brisk", "akaze", "orb", "sift", "surf", "brief"]。
基本每个解法的辨认效果、内存占用等评估数据,可以参照Airtest/benchmark文档,在实际用到中所,由于用到场景、幻灯片解析度大小以及笔记型电脑一般来说的视乎各有不同,每个解法基本的表现得失持续性也缘故大各有不同,因此大家可以用自己的用到案例来同步进行解法的测试,选择更是合适的解法。
在AirtestJavaScript中所,用到表列编译器来旧版JavaScript中所的投影冗余解法
1.3 实时类似鼠标
在JavaScript中所,有时须要读取一些原则上的鼠标,例如点一下HOME键、BACK键等,如果器材是Android器材,可以参照雅虎的 Android鼠标码 (本土Gmail如果打不开此链接,可并不需要以查找引擎:Android keyevent 查找)。
比如说:keyevent("KEYCODE_DEL") 或者并不需要读取鼠标码,肯定匹配为字符串:keyevent("67")
在Windows该系统中所,代为参照 pywinauto 这个奎备有的 Windows鼠标码
比如说:keyevent("{BACKSPACE}")
iOS器材以前暂时 只默许 HOME 鼠标的keyevent。
android的鼠标参照:
1.4 读取手写
在JavaScript中所,如果想要付诸手写读取,一般须要这样的处理过程:
1. 点一下你须要读取的位置,抑制读取光标
2. 调用airtest的 text() 端口来读取细节
如图,在这个JavaScript从前 先游标了须要读取的位置 ,然后调用了text端口同步进行读取,在运行时笔记型电脑才就会则会被安装一个名为 yosemite.apk 的广泛应用,然后落成 yosemite繁体字来同步进行读取。
而且须要肯定的是,在用到过text端口后,笔记型电脑繁体字就会被预设为yosemite繁体字,因此看不到时是常音箱了(必需惊慌)。如果须要手工读取,可以在该系统的繁体字所设中所,把繁体字预设回该系统繁体字亦可恢复。同时我们也备有了 安卓笔记型电脑同事动态 ,在笔记型电脑同事中所可以简单地游标鼠标来预设繁体字。
1.5 地区内视频/地区视频
地区内视频或者说按极坐标视频是大家偶尔就会坦言的持续性,Airtest备有了 crop_image(img, rect) 方法有可以帮助我们付诸地区内视频
# -*- encoding=utf8 -*-
originallyauthororiginally = "AirtestProject"
from airtest.core.api import *
# crop_image()方法有在airtest.aircv中所,须要扩展
from airtest.aircv import *
auto_setup(originallyfileoriginally)
screen = G.DEVICE.snapshot()
# 地区内视频
screen = aircv.crop_image(screen,(0,160,1067,551))
# 保存地区内视频到log档案夹中所
try_log_screen(screen)
【未完待续】
。达霏欣米诺地尔治疗脱发多久能生发必奇蒙脱石散哪些人群适用
嗓子痒有异物感
- 智能生产商系列研究 | 锂电设备二十年进化史
- 新思科技年中六年获评Gartner魔力象限领导者殊荣
- 微信偿付宝太强了!全球手机偿付排名公布:前五都是熟悉的名字
- LGS22 Ultra终于忍不住降价了,它有这些优缺点,买吗?
- 采美新品 | 西班牙ROSS旗下明星产品Binary Premium云智能体疗系统设计上线!
- 都说AI门槛高!普通人就真的学不了吗?不一定!
- 贵州联通随身wifi适用人群与应用场景
- 托盘wifi是什么?值得买吗?托盘wifi适合哪类人群使用?
- 应用场景丰富联通与取胜海物联MiFi解决用户痛点
- 华为手机又回来了!余承东:供应改善产能开始恢复,只想买就能买到
- 华为手机终于回来了?余承东:华为Mate Xs 2是划时代的剪切屏!
- Find X5 Pro综合体验:不俗外观+优秀影像,或是同价位最好的必需
- 深空之眼:熯天·提尔(下棋哥 )输出尿素解析及思路
- 预见分析是什么?