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是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...
随机推荐
- SQL练习02
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+| Id | Salary |+----+--------+| 1 | 100 || ...
- 【BZOJ4031】【Luogu P4111】[HEOI2015]小Z的房间
裸的矩阵树定理.求行列式的时候答案要在中间统计,因为交换两个行会使答案取反. #include <bits/stdc++.h> using namespace std; const int ...
- Linux系统上java调用C++ so库文件
PART1: java中使用jna替代jni调用c++/c生成的 dll/so库文件需要做的事项 1.引入JNA依赖或者直接下载JNAjar包 <!-- http ...
- Binding 指令实现双向数据绑定
代码 #方法一:ng-bind的使用 #方法二:{{}}插值表达式的使用 <!doctype html> <html> <head> <meta charse ...
- MySQL数据库入门———常用基础命令
mysql 连接数据库命令: MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) mysql -h localhost -u root -p ...
- js下拉框选择图片
二种方式:下拉框里面选项有图片与没有图片 1.用下拉框写 下拉框的option没法添加图片如果下拉框里面不需要图片可以用这种方式. <!DOCTYPE html> <html> ...
- 分布式-网络通信-IO-基础(2)
IS 与 OS1. 基本 IO 操作1.1. InputStream 与 OutputStream1.1.1. 输入与输出我们编写的程序除了自身会定义一些数据信息外,经常还会引用外界的数据,或是将自身 ...
- C++入门经典-例6.3-字符串之未使用字符串结束符“\0”和使用字符串结束符“\0”的区别
1:为字符串数组赋值的方式有两种,即数组元素逐一赋值和使用聚合方式赋值. 为数组元素逐一赋值.例如: pWord[0]='H'; 使用聚合方式赋值如: char pWord[]={'H','E','L ...
- 对于Java培训出身的同学,接下来该怎么学习技术?
首先恭喜从培训班出来找到工作的同学,确实挺不容易的,4个月的培训,每天从早上9点到晚上9点,也是996,主要的活动地方就是宿舍和教室, 让我现在也去培训,我估计还熬不下来. 尤其是对于从小白开始的同学 ...
- 【转】diamond专题(二)– 核心原理介绍
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...