1、在使用uiautomator进行自动化测试过程当中,执行某些动作之后,要进行判断是否已执行的动作成功时,需要添加检查点来判断,因此添加判断点除了使用id、text、view等方式进行之外,存在一种问题是界面无任何的可判定元素来判断当前的测试动作是否成功时,就需要用到截图对比;

2、以下是简单的截图对比与自动化执行相结合使用的小例子,在真正的测试执行过程中,可将截图方法进行封装,在使用时调用即可;

# -*- coding: utf- -*- 

from uiautomator import Device
import time
import os
import cv2
import numpy as np class Test:
def __init__(self,deviceid):
self.device=Device(deviceid)
self.deviceid=deviceid def click(self,x,y):
self.device.click(x,y) def startActivity(self,activity):
os.system('adb -s %s shell am start %s' %(self.deviceid,activity)) #平均hash算法计算
def classify_aHash(self,image1,image2):
image1 = cv2.resize(image1,(,))
image2 = cv2.resize(image2,(,))
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) #输入灰度值,返回hash
def getHash(self,image):
avreage = np.mean(image)
hash = []
for i in range(image.shape[]):
for j in range(image.shape[]):
if image[i,j] > avreage:
hash.append()
else:
hash.append()
return hash # 计算汉明距离
def Hamming_distance(self,hash1,hash2):
num =
for index in range(len(hash1)):
if hash1[index] != hash2[index]:
num +=
return num #使用adb命令截取手机页面图片
def screenshot(self):
time.sleep()
#os.system("adb shell /system/bin/screencap -p /sdcard/p2.png") #(保存到SDCard)
#os.system("adb pull /sdcard/p2.png E:\Study\uiautomator\picture") #(保存到电脑)
     self.device.screenshot("E:\\Study\\uiautomator\\picture\\p2.png") if __name__ == "__main__":
w=Test('0123456789ABCDEF') #记录手机串号,查看方式adb devices
w.startActivity('com.android.mms/.ui.ConversationList')
w.screenshot()
img1 = cv2.imread("E:\\Study\\uiautomator\\picture\\p1.png") #读取保存的图片,原始图片
img2 = cv2.imread("E:\\Study\\uiautomator\\picture\\p2.png") #读取与原始图相同使用screenshot方法截取的页面图片
cv2.imshow("img1",img1) #展示图片1
cv2.imshow("img2",img2) #展示图片2
degree = w.classify_aHash(img1,img2) #调用方法,对比两张图片是否相同,返回值0为相同,返回1为不同,值越小,返回值越小,相似度越高
print degree
cv2.waitKey()

uiautomator——简单的将自动化测试与截图对比相结合使用的小例子!的更多相关文章

  1. python——几种截图对比方式!

    本次记录的几种截图对比方式,主要是为了在进行手机自动化测试时,通过截图对比来判断测试的正确性,方式如下: # -*- coding: utf- -*- ''' 用途:利用python实现多种方法来实现 ...

  2. 简单实现接口自动化测试(基于python+unittest)

    简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Pytho ...

  3. 简单Web UI 自动化测试框架 pyse

    WebUI automation testing framework based on Selenium and unittest. 基于 selenium 和 unittest 的 Web UI自动 ...

  4. 如何简单实现接口自动化测试(基于 python) 原博主地址https://blog.csdn.net/gitchat/article/details/77849725

    如何简单实现接口自动化测试(基于 python) 2017年09月05日 11:52:25 阅读数:9904 GitChat 作者:饿了么技术社区 原文:如何简单实现接口自动化测试(基于 python ...

  5. Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

    Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...

  6. 用C#Winform写个简单的批量清空文件内容和删除文件的小工具

    用C#Winform写个简单的批量清空文件内容和删除文件的小工具 本文介绍这个简单得不能再简单的小项目.做这个项目,有以下目的. 1 当然是做个能用的工具 2 学习使用Github 关于用VS2013 ...

  7. ASP.NET Cookie对象到底是毛啊?(简单小例子)

    记得刚接触asp.net的时候,就被几个概念搞的头痛不已,比如Request,Response,Session和Cookie.然后还各种在搜索引擎搜,各种问同事的,但是结果就是自己还是很懵的节奏. 那 ...

  8. 2、Lucene 最简单的使用(小例子)

    在了解了Lucene以后,我打算亲手来做一个Lucene的小例子,这个例子只是Lucene最简单的应用:使用Lucene实现标准的英文搜索: 1.下载Lucene 下载Lucene,到Lucene的官 ...

  9. php+jquery+ajax+json简单小例子

    直接贴代码: <html> <title>php+jquery+ajax+json简单小例子</title> <?php header("Conte ...

随机推荐

  1. windows10上pip install channels

    之前一直在MBP上做开发,在windows偶尔改一次代码,最近在windows上Pipi nstall了一次Django Channels,其中到twisted那步出现数坑 1. Microsoft  ...

  2. 学习Timer定时器

    原文地址:http://www.cppblog.com/ivenher/articles/19969.html setTimer函数用于创建一个计时器,KillTimer函数用于销毁一个计时器.计时器 ...

  3. 自己用 Netty 实现一个简单的 RPC

    目录: 需求 设计 实现 创建 maven 项目,导入 Netty 4.1.16. 项目目录结构 设计接口 提供者相关实现 消费者相关实现 测试结果 总结 源码地址:github 地址 前言 众所周知 ...

  4. 【Java入门提高篇】Day16 Java异常处理(下)

    今天继续讲解java中的异常处理机制,主要介绍Exception家族的主要成员,自定义异常,以及异常处理的正确姿势. Exception家族 一图胜千言,先来看一张图. Exception这是一个父类 ...

  5. POI导出excel并下载(以流的形式在客户端下载,不保存文件在服务器上)

    import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; i ...

  6. css那些事(一)

    一.内边框padding和外边框margin属性缩写 内外边框有四个属性:padding-top,padding-right,padding-bottom,padding-left;margin-to ...

  7. 适合Python 新手的5大练手项目,你练了么?

    接下来就给大家介绍几种适合新手的练手项目. 0.算法系列-排序与查找 Python写swap很方便,就一句话(a, b = b, a),于是写基于比较的排序能短小精悍.刚上手一门新语言练算法最合适不过 ...

  8. mac终端命令及pycharm常用快捷键记录

    mac终端命令: 1.root权限 $sudo su - 2.定位到指定文件夹位置 $cd /Users/计算机名称/Desktop     (定位到桌面) 3.新建文件夹 $mkdir 文件夹名称 ...

  9. SQL语句的CRUD

    一.基础 .说明:创建数据库 CREATE DATABASE database-name .说明:删除数据库 drop database dbname .说明:备份sql server --- 创建 ...

  10. Swift学习字符串、数组、字典

    一.字符串的使用 let wiseWords = "\"I am a handsome\"-boy" var emptyString = "" ...