「按鍵精靈安卓版」關于全分辨率腳本的一些理解(非游戲app)

?在講全分辨率之前,先來說一下為什么我們平時寫的腳本不能實現全分辨率。

(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里面提取節點屬性值。

除了自帶的節點提取命令以外,還有可以看看我前兩天發的文章:關于字符串提取的方法。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容