首页 > 代码库 > uiautomator——简单的将自动化测试与截图对比连接起来使用!
uiautomator——简单的将自动化测试与截图对比连接起来使用!
在自动化测试过程当中,除了使用id。text。view等方式进行查找元素之外,存在一种问题是界面无任何的可判定元素来判断自动化测试是否成功时,需要用到截图对比
# -*- coding: utf-8 -*- from uiautomator import Device import time import os import cv2 import numpy as np class Test: def __init__(self,deviceid): self.device=Device(deviceid) self.deviceid=deviceid def click(self,x,y): self.device.click(x,y) def startActivity(self,activity): os.system(‘adb -s %s shell am start %s‘ %(self.deviceid,activity)) #平均hash算法计算 def classify_aHash(self,image1,image2): image1 = cv2.resize(image1,(8,8)) image2 = cv2.resize(image2,(8,8)) gray1 = cv2.cvtColor(image1,cv2.COLOR_BGR2GRAY) gray2 = cv2.cvtColor(image2,cv2.COLOR_BGR2GRAY) hash1 = self.getHash(gray1) hash2 = self.getHash(gray2) return self.Hamming_distance(hash1,hash2) #输入灰度值,返回hash def getHash(self,image): avreage = np.mean(image) hash = [] for i in range(image.shape[0]): for j in range(image.shape[1]): if image[i,j] > avreage: hash.append(1) else: hash.append(0) return hash # 计算汉明距离 def Hamming_distance(self,hash1,hash2): num = 0 for index in range(len(hash1)): if hash1[index] != hash2[index]: num += 1 return num #使用adb命令截取手机页面图片 def screenshot(self): time.sleep(8) os.system("adb shell /system/bin/screencap -p /sdcard/p2.png") #(保存到SDCard) os.system("adb pull /sdcard/p2.png E:\Study\uiautomator\picture") #(保存到电脑) if __name__ == "__main__": w=Test(‘0123456789ABCDEF‘) #记录手机串号,查看方式adb devices w.startActivity(‘com.android.mms/.ui.ConversationList‘) w.screenshot() img1 = cv2.imread("E:\\Study\\uiautomator\\picture\\p1.png") #读取保存的图片,原始图片 img2 = cv2.imread("E:\\Study\\uiautomator\\picture\\p2.png") #读取与原始图相同使用screenshot方法截取的页面图片 cv2.imshow("img1",img1) #展示图片1 cv2.imshow("img2",img2) #展示图片2 degree = w.classify_aHash(img1,img2) #调用方法,对比两张图片是否相同,返回值0为相同,返回1为不同,值越小,返回值越小,相似度越高 print degree cv2.waitKey(0)
uiautomator——简单的将自动化测试与截图对比连接起来使用!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。