uiautomator——简单的将自动化测试与截图对比连接起来使用!

在自动化测试过程当中,除了使用id。text。view等方式进行查找元素之外,存在一种问题是界面无任何的可判定元素来判断自动化测试是否成功时,需要用到截图对比

# -*- coding: utf-8 -*- 

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,(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) 

    #输入灰度值,返回hash
    def getHash(self,image):
        avreage = np.mean(image)
        hash = []
        for i in range(image.shape[0]):
            for j in range(image.shape[1]):
                if image[i,j] > avreage:
                    hash.append(1)
                else:
                    hash.append(0)
        return hash

    # 计算汉明距离
    def Hamming_distance(self,hash1,hash2):
        num = 0
        for index in range(len(hash1)):
            if hash1[index] != hash2[index]:
                num += 1
        return num 

    #使用adb命令截取手机页面图片
    def screenshot(self):
        time.sleep(8)
        os.system("adb shell /system/bin/screencap -p /sdcard/p2.png")     #(保存到SDCard)
        os.system("adb pull /sdcard/p2.png E:\Study\uiautomator\picture")    #(保存到电脑)

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(0)
时间: 2024-11-07 09:09:26

uiautomator——简单的将自动化测试与截图对比连接起来使用!的相关文章

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

本次记录的几种截图对比方式,主要是为了在进行手机自动化测试时,通过截图对比来判断测试的正确性,方式如下: # -*- coding: utf-8 -*- ''' 用途:利用python实现多种方法来实现图像识别 author:SYW ''' import cv2 import numpy as np from matplotlib import pyplot as plt # 最简单的以灰度直方图作为相似比较的实现 def classify_gray_hist(image1,image2,siz

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

简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Python自带的Unittest框架调用,期望各位可以通过本文对接口自动化测试有一个大致的了解. 引言 为什么要做接口自动化测试? 在当前互联网产品迭代频繁的背景下,回归测试的时间越来越少,很难在每个迭代都对所有功能做完整回归.但接口自动化测试因其实现简单.维护成本低,容易提高覆盖率等特点,越来越受重视.

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

如何简单实现接口自动化测试(基于 python) 2017年09月05日 11:52:25 阅读数:9904 GitChat 作者:饿了么技术社区 原文:如何简单实现接口自动化测试(基于 python) 关注微信公众号:GitChat 技术杂谈 ,这里一本正经的讲技术 一.简介 本文从一个简单的登录接口测试入手,一步步调整优化接口调用姿势,然后简单讨论了一下接口测试框架的要点,最后介绍了一下我们目前正在使用的接口测试框架pithy.期望读者可以通过本文对接口自动化测试有一个大致的了解. 二.引言

selenium截图对比校验方法

/**对比图片进行校验是否成功**/package com.allin.pc; import java.awt.image.BufferedImage;import java.awt.image.DataBuffer;import java.io.File;import java.io.IOException;import java.util.concurrent.TimeUnit; import javax.imageio.ImageIO; import org.apache.commons.

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

WebUI automation testing framework based on Selenium and unittest. 基于 selenium 和 unittest 的 Web UI自动化测试框架. 特点 默认使用CSS定位,同时支持多种定位方法(id\name\class\link_text\xpath\css). 基于Selenium二次封装,使用更简单. 提供脚手架,快速生成自动化测试项目. 自动生成/reports/目录,以及HTML测试报告生成. 自带断言方法,断言tit

Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器(无数截图)

[文章作者:张宴 本文版本:v1.0 最后修改:2011.03.30 转载请注明原文链接:http://blog.s135.com/libevent_windows/] 本文介绍了如何在 Windows 操作系统中,利用微软 Visual Studio 2005 编译生成 Libevent 2.0.10 静态链接库,并利用 Libevent 静态链接库,实现一个简单的 HTTP Web服务器程序:httpd.exe. 假设 Visual Studio 2005 的安装路径为“D:\Program

LoadRunner简单介绍----性能自动化测试工具

在做性能测试中,我认为技术可以说是武功心法,工具则是一把利剑,有一把好的利剑可以帮助自己更好的完成性能测试工作.在这里简单介绍一下LoadRunner,带大家一起来认识一下这把尚方宝剑. 一.性能测试的概念: 1.性能测试:模拟真实的生产环境,以各种不同的压力(模拟大量用户)去测试被测系统.去"攻击"测试系统.同时记录下被测系统中服务器的各种重要资源情况,包括cpu.内存.磁盘和网络等资源. 2.性能测试时首先看性能需求,如果没有需求,这时要根据与客户交流.被测系统的相关资料.以及性能

用Python selenium+webdriver的一个简单的登录自动化测试--豆丁网登录测试

#coding=utf-8 from selenium import webdriver #from selenium.webdriver.remote import switch_to #from selenium.webdriver.common import alert #import unittest  import time,os def users_zidian():  #用户名用例用一个字典实现参数化调用#     users={'zhengshuheng':'123456','[

简单的接口自动化测试

# coding=utf-8 import requests, xlrd, pymysql, random, xlutils, copy, time, openpyxl def readexcel(file_path): try: book=xlrd.open_workbook(file_path) except Exception as e: print("文件路径不对") return e else: # 获取第一张表 sheet1 = book.sheets()[0] rows