【appium】APP自动化测试,判断页面与预期是否相同

自动化测试中,有时需要验证页面跳转是否正常

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)
原文地址:https://www.cnblogs.com/ffrs/p/11177495.html