問題的背景
??移動端ui自動化過程中,有時候我們經(jīng)常會遇到安全支付輸入的問題,尤其是筆者所在的金融公司;經(jīng)常需要輸入支付密碼,而一般安全鍵盤往往是特殊繪制而成,隱藏了實現(xiàn)細(xì)節(jié),無法通過Android SDK工具uiautomatorviewer獲取到,ios更直接獲取不到元素的層級關(guān)系:例如以下場景:

image.png
解決方法
??常規(guī)的解決方法有兩類:
- 通過opencv圖像識別獲取,網(wǎng)上已有相關(guān)的代碼,可以直接參考,然而受限于不同圖片的分辨率及大小比例,要想保持一個較高的精確度需要較高的技術(shù)水平;
- 讓開發(fā)打包,去除安全鍵盤的限制;代碼入侵,不推薦;
筆者不成熟的解決方法
??由于所測APP安全鍵盤位置及順序固定,其實可以通過一定的算法精確獲取每個數(shù)字控件的坐標(biāo)軸;分析項目源代碼可知,每個數(shù)字元素的高度都為50dp,而我們只需要將其換算成像素即可大致算出每個數(shù)字在屏幕中的坐標(biāo)位置,同時也解決了多分辨率的問題。因此我們可選取一個參照物,獲取到該元素跟dp的比例作為分辨率;具體代碼如下,筆者選取了登陸頁面的姓名輸入框作為參照物;

具體某個數(shù)字坐標(biāo)軸的獲取

根據(jù)密碼點擊坐標(biāo)軸
歡迎隨時交流,針對安全鍵盤,還沒有一個通用的處理方法,例如考慮更復(fù)雜的情況,加入鍵盤上的元素每次都亂序排列又該如何解決?