zoukankan      html  css  js  c++  java
  • monkeyrunner自动化测试

    通过MonkeyRunner遍历apk文件夹里的apk文件,实现自动安装应用,打开应用,截图,将截图与提前准备好的基线图做对比,对比相似度达到90%时,则对比通过,然后自动卸载应用,进入下一个APK文件的对比流程。当对比失败时,将自动停止测
    #!/usr/bin/env monkeyrunner
    # -*- coding: utf-8 -*-
    
    import time
    import sys
    import os
    from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
    
    #设置应用包名和入口Activity名
    pakageName = 'com.hujiang.cctalk'
    componentName = 'com.hujiang.cctalk/.MainActivity'
    
    #APP启动时等待时间(秒)
    startTime = 5
    
    #获取年月日时分秒
    now = time.strftime("%Y-%m-%d-%H-%M-%S")
    
    #python中获取当前运行的文件的名字
    name=sys.argv[0].split("\")
    filename=name[len(name)-1]
    
    #MonkeyRunner下获取运行的文件所在的路径
    rootpath  = os.path.split(os.path.realpath(sys.argv[0]))[0]
    
    #指定位置
    dir = rootpath + "/apk/"
    screenPath = rootpath + "/screenShot/"
    logpath = rootpath + "/log/"
    
    #获取待测APK个数
    countPak = len(os.listdir(dir))
    
    #新建一个Log文件
    if not os.path.isdir(logpath):
        os.mkdir(logpath)
    log = open( logpath + filename[0:-3] + "-log" +now + ".txt" , 'w')
    
    #开始连接设备
    print("Connecting...")
    device = MonkeyRunner.waitForConnection()
    log.write("连接设备...
    ")
    
    #卸载应用
    print('Removing...')
    device.removePackage(pakageName)
    print ('Remove Successful!')
    MonkeyRunner.sleep(2)
    log.write("初始化应用环境...
    ")
    countOK = 0
    countNO = 0
    
    for i in os.listdir(dir):
        print('Installing...<%s>'%i)
        log.write("==========安装应用==========
    ")
        path = dir + '//' + i
        #安装应用
        device.installPackage(path)
        print('Install Successful!')
    
        #打开应用
        device.startActivity(component=componentName)
        MonkeyRunner.sleep(startTime)
        log.write("启动App...
    ")
    
        #截图
        result=device.takeSnapshot()
        print("Take ScreenShot...")
    
        #保存截图
        result.writeToFile(screenPath + i + '.png','png')
        
        #进行图片比较
        resultTrue=MonkeyRunner.loadImageFromFile(screenPath + r'basePic.png')
        print "Pic Comparing..."
        log.write("对比图片中...
    ")
        if(result.sameAs(resultTrue,0.9)):
            print("%s is OK!"%i)
            log.write("比较通过!--%s--包可用!
    "%i)
            #卸载应用
            print('Removing...')
            log.write("初始化应用环境,移除中...
    ")
            device.removePackage(pakageName)
            print ('Remove Successful!')
            log.write("==========移除完毕==========
    ")
            countOK += 1
            MonkeyRunner.sleep(2)
        else:
            print("False!Please check %s!"%i)
            log.write("比较失败!请检查安装包--%s--是否可用!
    "%i)
            break
    
    log.write("共测试 %s 个包,%d 个通过。"%(countPak,countOK))
    

      

  • 相关阅读:
    新的一天,新的一周
    mysql重启失败,报错:starting mysql。 the server quit without updating pid file (/[failed]l/mysql/data/hostname.pid])
    rpm包安装、配置与卸载
    python高效运用(十)———文件(File)、输入输出的基本操作
    paramiko--------远程服务器连接工具
    main
    thread同步测试
    实验二测试
    《信息安全系统设计与实现》学习笔记9
    实验二 OpenSSL API使用
  • 原文地址:https://www.cnblogs.com/kuihua/p/6249341.html
Copyright © 2011-2022 走看看