我们在编写自动化脚本过程中,经常会发现,一个控件即没有text也没有id,有时甚至连控件也没有,可能就是一张图片。如果要点击的话如何实现呢,此时就可以使用找图来实现,典型的场景,比如做游戏辅助过程中,游戏界面一般没有标准控件,全部是图片,此时就可以使用找图来实现。
实现找图一般需要两步:
1.抠图(截图)。把待识别的区域截图保存下来,可以直接使用冰狐智能辅助的远程控制功能,直接截图,非常方便。
2.调用findImage来实现找图功能。
在当前UI界面中寻找指定的图片,返回找到图片的左上角坐标point,用point.x和point.y表示(屏幕坐标),若找不到图,则返回的坐标为负值比如:(-1, -1)。注意:第一次调用前必须先申请截屏权限。
findImage的参数如下:
参数名 | 类型 | 默认值 | 说明 |
---|---|---|---|
imageFileName | string | 必填 | 带路径的图片文件名。注意:支持assets文件,例:findImage('asset:template.png');(可以在定制App打包时将图片打包到app的assets中)。 |
region | array | 选填 | 识别区域[left, top, width, height],若取值在[0, 1]之间表示比例,例:0.5表示left位于屏幕x轴中点;若取值大于1表示像素值。 |
threshold | float | 选填 | 用于确定图片识别是否成功的阈值,取值范围[1, 100],默认值10(可以取小数值),值越小则要求的匹配度越高。 |
demo代码如下:
例子:
function main() {
requestScreenShot();
var point = findImage('/sdcard/template.jpg');
// var point = findImage('asset:img.png', [10, 10, 300, 100]);
if (point) {
console.log('find success x:', point.x, ' y:', point.y);
} else {
console.log('find image failed');
}
}