自动化测试中,有时需要验证页面跳转是否正常
1、选择appium实现,因为要填写appPcakage和appActivity,只能验证一个单独的APP,在自身APP上各个页面是否跳转正常
例如:焦点从APP中的【智能音箱】TAB移动到【历史】TAB后,可以通过try去判断“历史”页面是否存在应有的元素,若抛出异常说明跳转没有成功
#从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
2、若需求是验证从A_APP跳转到B_APP,因为有多个APP,因为要填写appPcakage和appActivity,appium就会有一定局限性,如图所示APP,源均来源于第三方APP,点击跳转到第三方APP,appium判断是否跳转成功就有一定难度
若不用appium判断,可以利用opencv进行判断,因为大多数app启动时都会有splash页,我们可以利用代码判断启动时的splash页与预期图片是否一致
代码如下,输出的值越接近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)