????????項(xiàng)目做小程序自動(dòng)化,我們用的是Appium+maven+testng框架來實(shí)現(xiàn)的撵枢,但做小程序自動(dòng)化測(cè)試時(shí)遇到一個(gè)問題,在進(jìn)行支付操作時(shí)用UIutomator定位數(shù)字鍵盤只能定位一行的整個(gè)模塊精居,并不能精確定位锄禽,且嘗試了下在模塊后面加個(gè)二維數(shù)組定位模塊里的元素,還是不行靴姿。最后咨詢了一下前端的大神告訴我可以試試用坐標(biāo)來定位Android的原生控件沃但。
首先,我們把整個(gè)屏幕看成一個(gè)坐標(biāo)軸
可以在UIAutomator上看到每個(gè)模塊都有坐標(biāo)點(diǎn)佛吓,如下圖宵晚,我們可以直接得到該模塊左上和右下的x值及y值,現(xiàn)在我們想獲取數(shù)字1到3就很輕松了维雇,只需找到數(shù)字的中心點(diǎn)即可淤刃。如想獲取數(shù)字1,那1的x值約為180(計(jì)算方式:(1079-1)/3/2)吱型,y值約為81(計(jì)算方式:(1546-1385)/2)逸贾,其他元素舉一反三就都能定位到了。
但坐標(biāo)定位的方法有一定的缺陷,如果換一個(gè)手機(jī)铝侵,屏幕大小不一樣坐標(biāo)會(huì)發(fā)生變化掂名,這種方法定位也不夠穩(wěn)定,而且如果遇到數(shù)字鍵盤的排列隨機(jī)變化的話哟沫,這種方案也行不通饺蔑,可以通過圖像識(shí)別的方式來定位,目前只接觸過Airtest嗜诀,不過感覺對(duì)于文字和數(shù)字猾警,Airtest的識(shí)別并不是很準(zhǔn)確。下來可以再調(diào)研一下OpenCV的matchTemplate 方法隆敢,可以在模板塊和輸入圖像之間尋找匹配,獲得匹配結(jié)果圖像