這兩天屢次發(fā)現(xiàn)使用Uiautomator做輸入的時(shí)候融师,輸進(jìn)去的內(nèi)容不是自己想要的帆疟。研究發(fā)現(xiàn):錄制時(shí)的鍵盤字母位置和回放時(shí)的字母位置不同了爆土。其實(shí)椭懊,這種情況在安全性比較高的App上經(jīng)常會(huì)遇到。譬如:招商銀行輸密碼的安全鍵盤步势,某網(wǎng)站登錄頁密碼欄等氧猬。這種技術(shù)手段肯定是值得贊美的背犯,但是同時(shí)給咱們的自動(dòng)化測(cè)試帶來了不便。為了提高用例執(zhí)行的準(zhǔn)確性盅抚,原先依賴Uiautomator獲取鍵盤坐標(biāo)的方法就顯得比較low了漠魏;下面提供一種經(jīng)研究后覺得可行的思路來優(yōu)化一下。
圖像分割妄均、查找
鍵盤字母所在的位置始終是Uiautomator賴以執(zhí)行的核心柱锹,這點(diǎn)不變;微調(diào)的是錄制方法和回放方法多了圖像處理這個(gè)環(huán)節(jié)丛晦,看下圖:
多出來的環(huán)節(jié)均針對(duì)下面這種界面進(jìn)行操作:(為了保護(hù)隱私奕纫,找了一個(gè)普通的參照物)
錄制中:先將鍵盤按鈕拆分成一系列的小圖標(biāo),每一個(gè)圖標(biāo)均有自己的唯一名稱作為標(biāo)識(shí)烫沙,每一個(gè)圖標(biāo)的中心點(diǎn)坐標(biāo)匹层,左上角至右下角的坐標(biāo)均記錄在案;當(dāng)鍵盤被手指觸碰后锌蓄,根據(jù)觸碰點(diǎn)位置所枚舉出來的最大值與下列圖標(biāo)某個(gè)中心坐標(biāo)位置進(jìn)行綁定升筏,進(jìn)而找到點(diǎn)擊的“目標(biāo)圖”;
回放中:就沒有太多可以說的了瘸爽。因?yàn)榕c之前文章中提到思路和算法一致您访;就是通過小圖比大圖找到在位于大圖中的坐標(biāo)位置,然后將新坐標(biāo)交給Uiautomator或者機(jī)械手去點(diǎn)擊剪决,然后再斷言就可以了灵汪;
最后,該思路并非是對(duì)應(yīng)移動(dòng)端浮動(dòng)鍵盤的唯一解柑潦;在此拋磚引玉享言,歡迎大家一起前來討論,共同解決難題渗鬼!^_^