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)
APP自动化测试,判断页面与预期是否相同的更多相关文章
- UI自动化测试:App的Webview页面元素左滑
一.前言 在做App自动化测试时,我们会遇到如上图所示的列表数据页面左滑删除场景,一般可以通过location.rect方法获取对应列表的元素坐标,然后使用TouchAction或者swipe滑动 ...
- 篇3 安卓app自动化测试-搞定界面元素
篇3 安卓app自动化测试-搞定界面元素 --lamecho辣么丑 1.1概要 大家好! 我是lamecho(辣么丑),今天是<安卓app自动化测试>的第三 ...
- 通过实例介绍Android App自动化测试框架--Unittest
1.为什么需要使用框架实现自动化测试 作为测试工程师,可能在代码能力上相比开发工程师要弱一点,所以我们在写脚本的时候就会相对容易的碰到更多的问题,如果有一个成熟的框架供给我们使用的话,可以帮助我们避免 ...
- Android Hybrid App自动化测试实战讲解(基于python)
1.Hybrid App自动化测试概要 什么是Hybrid App? Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App ...
- 初识Android App自动化测试框架--Unittest
1.为什么需要使用框架实现自动化测试 作为测试工程师,可能在代码能力上相比开发工程师要弱一点,所以我们在写脚本的时候就会相对容易的碰到更多的问题,如果有一个成熟的框架供给我们使用的话,可以帮助我们避免 ...
- Java&Selenium自动化测试实现页面元素、页面对象及测试代码分离
一.摘要 本篇博文将介绍自动化测试实现页面元素.页面对象及测试代码分离在自动化框架中的实现 二.解析页面元素定位信息 首先,将页面元素与实际的代码分离,首先我们将页面元素定位信息和定位表达式保存在属性 ...
- 基于UiAutomator2+PageObject模式开展APP自动化测试实战
前言 在上一篇<APP自动化测试框架-UiAutomator2基础>中,重点介绍了uiautomator2的项目组成.运行原理.环境搭建及元素定位等基础入门知识,本篇将介绍如何基于uiau ...
- 构建基于WinRT的WP8.1 App 01:页面导航及页面缓存模式
本篇博文主要阐述基于Windows Runtime的Windows Phone 应用页面间导航相关知识,主要分为以下几个方面: Window.Frame和Page概览 页面间实现跳转 处理物理后退键 ...
- 老李分享:android app自动化测试工具合集
老李分享:android app自动化测试工具合集 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...
随机推荐
- Java 实现C#中的String.format效果 解决("我是{0},今年了","whaozl") bug
/** * 需要引入com.alibaba.fastjson.1.2.8 * 两种调用方式 * String template1="我是{0},今年{1 ...
- Linux文件类型和文件相关命令
文件类型 ll后可以看到文件详情: -:常规文件(内部类型是什么,用file命令) d:directory,目录文件 b:blobk device,块设备文件,支持以“block”为单位进行随机访问 ...
- 局部处理的边缘连接(python+opencv)
rt import cv2 import numpy as np path = "_lo.png" img = cv2.imread(path) gray = cv2.cvtCol ...
- Java如何导入一个新的项目
下面将展示如何将一个项目导入eclipse中 1.点击文件-------->从系统中打开项目 2.选择你要导入的项目所在的目录 3.配置环境 单击项目,选择构建路径------>配置构建路 ...
- PIXI屏幕自适应以及强制横屏
canvas屏幕适配可以用css样式自适应, 可以设置transform旋转角度和transfrom-origin:center以中心点旋转位置以及宽高width和height来实现对canvas的适 ...
- k8s命令自动补全
Linux yum install -y bash-completion source /usr/share/bash-completion/bash_completion source <(k ...
- 随机验证码生成和join 字符串
函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符) ...
- try捕获SQL异常
- Tire(字典树)
Tire 字典树,又称为单词查找树,Tire 树,是一种树形结构,它是哈希树的变种. 实现原理: 字典树与字典很相似,当要查一个单词是不是在字典树中,首先看单词的第一个字母是不是在字典的第一层,如果不 ...
- 10.Python内置函数一览表
为了提高程序员的开发效率,Python 提供了很多可以直接拿来用的函数(初学者可以先理解为方法),每个函数都可以帮助程序员实现某些具体的功能. 举个例子,在 Python 2.x 中 print 只是 ...