自动化测试中,有时须要验证页面跳转是否正常app
一、选择appium实现,由于要填写appPcakage和appActivity,只能验证一个单独的APP,在自身APP上各个页面是否跳转正常测试
例如:焦点从APP中的【智能音箱】TAB移动到【历史】TAB后,能够经过try去判断“历史”页面是否存在应有的元素,若抛出异常说明跳转没有成功spa
#从A页面,跳转到B页面 driver.find_element_by_xpath(u"//*[@text='历史']").click() # 判断是否成功跳转到了B页面 try: driver.find_element_by_xpath(u"//*[@text='所有历史']") print u"成功" except NoSuchElementException as msg: print u"失败,查找元素异常%s"%msg
二、若需求是验证从A_APP跳转到B_APP,由于有多个APP,由于要填写appPcakage和appActivity,appium就会有必定局限性,如图所示APP,源均来源于第三方APP,点击跳转到第三方APP,appium判断是否跳转成功就有必定难度code
若不用appium判断,能够利用opencv进行判断,由于大多数app启动时都会有splash页,咱们能够利用代码判断启动时的splash页与预期图片是否一致blog
代码以下,输出的值越接近0则两张图片类似度越高,若输出的值为0,则两张图一致图片
import cv2 import numpy as np class Test: def getHash(self,image): avreage=np.mean(image) hash0 = [] for i in range(image.shape[0]): for j in range(image.shape[1]): if image[i,j]>avreage: hash0.append(1) else: hash0.append(0) return hash0 def Hamming_distance(self,hash1,hash2): num = 0 for index in range(len(hash1)): if hash1[index] != hash2[index]: num += 1 return num 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) if __name__ == '__main__': w=Test()
#导入1.png图片和2.png图片 img1 = cv2.imread('1.png') img2 = cv2. imread('2.png') degree = w.classify_aHash(img1,img2)
#输出值等于0说明两张图片一致,输出值不为0,则越接近0则越类似 print degree cv2.waitKey(0)