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