美文网首页按键精灵
「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)

「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)

作者: 3分钟学堂郭立员 | 来源:发表于2020-08-11 12:14 被阅读0次

    ​在讲全分辨率之前,先来说一下为什么我们平时写的脚本不能实现全分辨率。

    (1)脚本中含有固定坐标值。

    看下图:

    这是模拟两个屏幕,一个“小屏”,一个“大屏”,假设我要点击上面的脚本app(云扫码),小屏点击的坐标是(x,y),大屏点击的坐标是(x1,y1),如果我们比较x和x1,或者y和y1,很明显两者数值是不相等的。

    那么当我们用tap x,y去点击小屏上的app是可以点到,但是点击大屏上的app,由于坐标不对,是点击不到。这样按照小屏写的脚本只能在小屏上使用,按照大屏写的脚本只能在大屏上使用,所以脚本不通用。

    注:当屏幕长宽比一样时,是可以通过缩放比例控制坐标值,实现通用。

    (2)脚本中使用了图色命令

    说一下图色命令包括哪些,看下图:

    图片中的命令都属于图色命令,只要你的脚本中用到了这些命令,基本上就不能实现全分辨率。

    还是拿之前的图为例:

    同样一个图片,看起来很像,但是当我们放大来看,会发现两者的像素颜色排列是差别很大的。

    而我们的图色命令是基于像素颜色和坐标的比对实现的,当两者差别很大的时候,即使看着很像,本质上已经是两个“完全不同”的图了,自然也就无法使用图色命令。

    (3)不同设备(不同系统版本)

    同一个图片,在不同的设备或者不同系统版本上,显示的时候是有细微差别的。这个差别我们肉眼分辨比较难,但是对于图色命令是很容易区分,这也是我们在使用图色命令的时候,会把相似度稍微调低一点。

    说完不能实现全分辨率的原因以后,我们说一下全分辨率怎么写。

    (1)能写全分辨率的前提

    你要操作的app必须有xml,不能是游戏app,对于苹果ios系统的xml我不熟悉,这里暂时不做讨论。

    (2)什么是xml

    具体描述你可以查看百度百科,简单点说就是屏幕上的各个元素的代码形式。

    我们通过元素抓取可以看到,屏幕是由一个个小方块组成,这些方块就是界面的组成元素,我们称为“节点”。

    节点体现在代码上就是node

    node分为两种形式:

    ①含有子节点的 子节点

    ②不含有子节点的 

    node的属性和属性值

    一个node节点有什么功能,在什么位置,都是由以上这些属性决定的。这里面我标红两个我们会用到的。

    ①text属性,也就是文字,通常我们要提取一个界面上的文字,就是提取这个text属性值

    ②bounds属性,坐标范围,当我们要点击某个内容,只要知道它的坐标范围,点击这个范围值就可以了。

    (3)关于xml的提取

    目前有三个方法,山海插件的getuixml命令,jsd插件,隐藏的Element命令,我个人比较喜欢山海插件的getuixml命令,按键自带的,缺点是获取xml需要的时间比较长。

    (4)从xml里面提取节点属性值。

    除了自带的节点提取命令以外,还有可以看看我前两天发的文章:关于字符串提取的方法。

    相关文章

      网友评论

        本文标题:「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)

        本文链接:https://www.haomeiwen.com/subject/lrgedktx.html