自動化測試中,有時需要驗證頁面跳轉是否正常
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)