UiAutomator uiautomator2 可以检测 app 里面的一个按钮的背景、文字颜色或其他属性的改变吗

index9-44 · June 10, 2025 · Last by index9-44 replied at June 12, 2025 · 9093 hits

就是我现在需求是我需要在某个按钮上面做点击操作,现在呢这个按钮不一定是可以点的,这个按钮的背景或者文字一旦改变,我才能点击,目前来看,这个按钮是背景改变了,即没有文字属性,是背景图片里面包含文字。那么如何检测按钮的背景页面改变呢?只能 opencv 了吗

共收到 7 条回复 时间 点赞

你自己 dump 看下元素属性的变化啊,没有变化就只能截图,用 cv 识别颜色了,理论上有 visable、enable 的属性变化

你贴个图大家帮你看看。终极目标咱就得上 AI 模型了。专治各种不服的。

对 甬力君 回复

weditor 看了没有任何变化,唯一看数据就 activity 变化了,就很奇怪感觉是 button 的样式是用图片改变的,图片里面有字体

方案 1、for 循环点击,直到出现点击之后的效果出来(sleep(0.5),for 循环 60 次差不多就是 60s)
方案 2、变化前或者变化后的图片是固定的几种图片的话,直接把图片都截取下来,在代码里面判断图片是否在界面上

对 wupengfeng 回复

方案二感觉不错,是要用 opencv 吗,这样会不会性能不够,或者卡顿

对 index9-44 回复

对比了 100 多次,才不到 3s
是 opencv 的
1、截取目标元素所在位置的图片(直接截图,然后裁剪元素区域)
2、拿截图去和已经固定好的几张图片做相似度对比(设备适配问题,截图对比的时候需要 创建目标图像的金字塔)

对 wupengfeng 回复

这个性能很强,就选这个了

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up。