在讲全分辨率之前,先来说一下为什么我们平时写的脚本不能实现全分辨率。
(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
具体描述你可以查看百度百科,简单点说就是屏幕上的各个元素的代码形式。