在做UI測(cè)試時(shí)津肛,對(duì)于自定義的UI控件章喉,程序識(shí)別不到,可以考慮通過識(shí)別圖片找坐標(biāo)身坐,進(jìn)而通過點(diǎn)擊坐標(biāo)解決問題秸脱。具體實(shí)現(xiàn)方式為,先截取整個(gè)頁面大圖部蛇,然后在頁面上截取目標(biāo)UI控件的局部小圖摊唇,最后通過查找局部UI控件小圖匹配原始頁面圖片,并返回局部UI控件小圖在原始頁面圖片的坐標(biāo)涯鲁。通過返回的坐標(biāo)來點(diǎn)擊目標(biāo)UI控件遏片。
匹配代碼如下:
import aircvas ac
def matchImg(imgsrc, imgobj,confidence=0.2):? ? # imgsrc=原始圖像,imgobj=待查找的圖片,confidence=設(shè)置匹配系數(shù)
? ? imsrc = ac.imread(imgsrc)
????imobj = ac.imread(imgobj)
????match_result = ac.find_template(imsrc, imobj,confidence)
????if match_resultis not None:
????match_result['shape'] = (imsrc.shape[1], imsrc.shape[0])# 0為高撮竿,1為寬
? ? return match_result
if __name__=='__main__':
p = matchImg("D:\\AppsUITest\\Pages\\login.jpg","D:\\AppsUITest\\Pages\\aaa.jpg")
print(p)
輸出結(jié)果:
#?{'result': (617.5, 887.0), 'rectangle': ((596, 869), (596, 905), (639, 869), (639, 905)), 'confidence': 0.9457036852836609, 'shape': (720, 1280)}