• 【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)
  • 相关阅读:
    Educational Codeforces Round 64(ECR64)
    [网络流]BZOJ4657 tower 最小割约束
    009:JSON
    008:数据类型
    007:MySQL SSL
    006:多实例安装
    005: 存储引擎介绍
    004:MySQL数据库体系结构
    003:MySQL账号创建授权以及Workbench
    002:MySQL升级以及访问连接
  • 原文地址:https://www.cnblogs.com/ffrs/p/11177495.html
Copyright © 2020-2023  润新知