控件使用小窍门

wanzi • 发表于 2020-10-21 17:20:30 • 更新于 2022-06-16 11:12:14 • 0回复

查找控件

昨天有人提到说查找控件的函数有点少,希望跟 Auto.js 似的加上什么点击子控件、父控件之类的。

说实话在市场调研初期,我试用了好几款免 ROOT 的软件,都不怎么满意。

不可否认的是,Auto.js 把能想到的和控件相关的可能性列得特别全,也算是无障碍权限免 ROOT 自动化脚本工具的代表产品。

可是我真的没弄明白它为什么要把函数拆的那么分散,如果你没用过 Auto.js,可以去它的官方文档看看。

我最近几年有个习惯就是,先得我这个零基础的人学的会,我才有信心能让开发者学的会,毕竟大部分人不是科班出身。

Auto.js 光控件就有几十个函数真的很让我头疼,况且我还得把它变成可视化的函数?

我的目标不说做个比其他产品功能强大的,起码要做到简单、上手容易,而且最好要沿用触动函数的开发习惯,毕竟我也只会写触动脚本。

换个开发方式我自己都适应不了。

后来和开发、测试同事讨论了下,也参考了触动函数的开发经验,最后我们决定使用 table 作为参数格式,也就有了 widget.find 函数。

控件使用小窍门

常用的参数,想用几个就用几个,配合 rule 参数,差不多也就够用了。

控件不能点击怎么办

在测试过程中,我发现能找到特征的无非就是 text 文本和 desc 描述,id 大多数情况下都是空,即使有,也不能保证唯一。

但是问题又出现了,有 text 的控件吧,经常 clickable 参数都是 false。

简直让人崩溃有木有,文字不能点击,但是文字外面的父控件可以点击。

我又跟开发同事讨论了下,能不能在找到控件的时候返回下这个控件的区域坐标?

这样就可以根据坐标计算控件的中心点了,有了坐标不就能够点击了吗!

于是又多了一个函数叫 widget.region.

控件使用小窍门

点击不生效怎么办

测试过程中我还发现,怎么明明开着无障碍权限,有时候就是不点击呢?

后来发现,无障碍权限的状态它有可能是假的!

明明开关开着,但其实是没有获取到权限的。

是不是很崩溃?

然后我们利用获得无障碍权限就可以自动打开程序这个特性,当你打开无障碍权限开关,看到自动跳转到了积木编程界面,那么恭喜你,真的成功获得了权限。

如果没有,那就关闭再重新打开下咯。

总结

控件使用小窍门

在 IDE 里获取 text 或者 desc 特征的时候先看看到底能不能点击,如果可以那就简单了:

如果不能点击,就稍微复杂一点点:

画了个简单的流程图

控件使用小窍门

7 人觉得有帮助 有帮助