触控魔方 / 使用文档 / 实战配方

按钮找不到时的两种点法

实战配方 · 使用文档

它解决什么问题

有些按钮在界面里读不到控件信息 —— 自绘按钮、WebView 里的元素、游戏界面、Flutter/Unity 画出来的东西。这类地方「按控件找」行不通,只能按「屏幕上长什么样」找。

触控魔方本来就不读控件 id,它只有两种定位方式:按文字找、按图标找。这条配方讲清楚什么时候用哪个。

先说清楚一件容易误会的事

应用里没有「元素 id」这个概念。所有定位最终都落在屏幕坐标上:

所以「按钮找不到」的正确问法是:这个按钮上有可读的文字吗? 有就按文字,没有就按图标。

做法 A:按钮上有文字 —— 用「查找文本节点」

加「查找文本节点」,关键参数:

参数 填什么
查找区域 searchRegion 默认全屏;确定在底部就框底部,能少认错
白名单 whiteList 想找的文字,比如「下一步」「确认」
黑名单 blackList 明确不要的文字,比如列表里同名的其他项

它的价值在于改版不怕:按钮挪到屏幕另一边照样能找到。

但注意:文字一样的不同按钮它分不清。列表里三个「编辑」按钮,它就不知道你要哪个 —— 这时候用区域限定,或者用做法 B。

做法 B:按钮是图标/图片 —— 用「图像匹配检测节点」

先在目标应用里截一张按钮的图,存到手机里。然后加「图像匹配检测节点」:

参数 填什么 说明
模板图 selectedTemplatePaths 你截的那张按钮小图 只要按钮本身,别把周围背景一起截进去
相似度 similarityThreshold 0.85 低了乱认,高了认不出;先 0.85,不行再微调
最多匹配数 maxMatches 1 只想点一个就设 1
方法 method 默认即可 界面没变形就用默认
坐标系方向 coordinateNameDirection 按屏幕方向选 横屏任务要改

模板图的两个硬要求:

  1. 只截按钮本身。 带上周围背景,换个页面就匹配不上。
  2. 同一个分辨率截。 换机型后模板图要重截。

接点击

两种做法的输出都是坐标(或坐标列表),接到「点击节点」的 x、y,或者接到「点击列表节点」的 positions。

只有一条要注意:先确认找到了再点。 两个节点都有成功/失败输出口,把「失败」那条接去别的分支,别让没找到的坐标直接喂给点击 —— 不然它会点在 (0,0),即屏幕左上角,而且日志还写「点击成功」。

什么时候两个都不合适

用到的节点

节点 干什么
查找文本节点 按文字定位,改版后照样找得到
图像匹配检测节点 按图标/图片定位,适合无文字的按钮
点击节点 用得到的坐标点下去
点击列表节点 有多个匹配时逐个点
条件判断节点 判断「找到了没有」再决定下一步

容易踩的坑