zoukankan      html  css  js  c++  java
  • 【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)
  • 相关阅读:
    86. Partition List
    328. Odd Even Linked List
    19. Remove Nth Node From End of List(移除倒数第N的结点, 快慢指针)
    24. Swap Nodes in Pairs
    2. Add Two Numbers(2个链表相加)
    92. Reverse Linked List II(链表部分反转)
    109. Convert Sorted List to Binary Search Tree
    138. Copy List with Random Pointer
    为Unity的新版ugui的Prefab生成预览图
    ArcEngine生成矩形缓冲区
  • 原文地址:https://www.cnblogs.com/ffrs/p/11177495.html
Copyright © 2011-2022 走看看