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

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

1、选择appium实现,因为要填写appPcakage和appActivity,只能验证一个单独的APP,在自身APP上各个页面是否跳转正常

例如:焦点从APP中的【智能音箱】TAB移动到【历史】TAB后,可以通过try去判断“历史”页面是否存在应有的元素,若抛出异常说明跳转没有成功

1#从A页面,跳转到B页面 2driver.find_element_by_xpath(u"//*[@text='历史']").click() 3 4# 判断是否成功跳转到了B页面 5try: 6 driver.find_element_by_xpath(u"//*[@text='全部历史']") 7 print u"成功" 8except NoSuchElementException as msg: 9 print u"失败,查找元素异常%s"%msg

2、若需求是验证从A_APP跳转到B_APP,因为有多个APP,因为要填写appPcakage和appActivity,appium就会有一定局限性,如图所示APP,源均来源于第三方APP,点击跳转到第三方APP,appium判断是否跳转成功就有一定难度

若不用appium判断,可以利用opencv进行判断,因为大多数app启动时都会有splash页,我们可以利用代码判断启动时的splash页与预期图片是否一致

代码如下,输出的值越接近0则两张图片相似度越高,若输出的值为0,则两张图一致

1import cv2 2import numpy as np 3 4class Test: 5 6 def getHash(self,image): 7 avreage=np.mean(image) 8 hash0 = [] 9 for i in range(image.shape[0]): 10 for j in range(image.shape[1]): 11 if image[i,j]>avreage: 12 hash0.append(1) 13 else: 14 hash0.append(0) 15 16 return hash0 17 18 def Hamming_distance(self,hash1,hash2): 19 num = 0 20 for index in range(len(hash1)): 21 if hash1[index] != hash2[index]: 22 num += 1 23 return num 24 25 def classify_aHash(self,image1,image2): 26 image1 = cv2.resize(image1,(8,8)) 27 image2 = cv2.resize(image2,(8,8)) 28 gray1 = cv2.cvtColor(image1,cv2.COLOR_BGR2GRAY) 29 gray2 = cv2.cvtColor(image2,cv2.COLOR_BGR2GRAY) 30 hash1 = self.getHash(gray1) 31 hash2 = self.getHash(gray2) 32 return self.Hamming_distance(hash1,hash2) 33if __name__ == '__main__': 34 w=Test()   #导入1.png图片和2.png图片 35 img1 = cv2.imread('1.png') 36 img2 = cv2. imread('2.png') 37 degree = w.classify_aHash(img1,img2)  #输出值等于0说明两张图片一致,输出值不为0,则越接近0则越相似 38 print degree 39 cv2.waitKey(0)
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

APP自动化测试,判断页面与预期是否相同 - HelloWorld