python+monkeyrunner实现检验Android渠道包

Android的渠道包太多,为了防止打包出现问题而导致app安装不了、安装了启动crash的问题,简单调用monkeyrunner进行测试。
1、脚本到手后需要修改包名及入口名
2、在脚本的同级目录创建log、 screenPath、apk文件夹。log文件夹,生成后的测试结果放置在这里;screenPath文件夹,放置基准图片及测试截图,基准图片命名为basePic.png;apk文件夹放置待测试的渠道包。
3、startime为等待应用打开的时间,如果启动较慢,可以把这个时间设置大一点

ApkTest.py
#!/usr/bin/env monkeyrunner
# -*- coding: utf-8 -*-

import time
import sys
import os
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
#设置应用包名和入口Activity名
pakageName = 'com.alog.owner'
componentName = 'com.alog.owner.moudles.guide.StartActivity'

#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]
print(rootpath)


#指定位置
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("连接设备...\n")

#卸载应用
print('Removing...')
device.removePackage(pakageName)
print ('Remove Successful!')
MonkeyRunner.sleep(2)
log.write("初始化应用环境...\n")
countOK = 0
countNO = 0

for i in os.listdir(dir):
    print('Installing...<%s>'%i)
    log.write("==========安装应用==========\n")
    path = dir + '//' + i
    #安装应用
    device.installPackage(path)
    print('Install Successful!')


    #打开应用
    device.startActivity(component=pakageName+"/"+componentName)
    MonkeyRunner.sleep(startTime)
    log.write("启动App...\n")

    #截图
    result=device.takeSnapshot()
    print("Take ScreenShot...")

    #保存截图
    result.writeToFile(screenPath + i + '.png','png')
    
    #进行图片比较
    resultTrue=MonkeyRunner.loadImageFromFile(screenPath + r'basePic.png')
    print "Pic Comparing..."
    log.write("对比图片中...\n")
    if(result.sameAs(resultTrue,0.9)):
        print("%s is OK!"%i)
        log.write("比较通过!--%s--包可用!\n"%i)
        #卸载应用
        print('Removing...')
        log.write("初始化应用环境,移除中...\n")
        device.removePackage(pakageName)
        print ('Remove Successful!')
        log.write("==========移除完毕==========\n")
        countOK += 1
        MonkeyRunner.sleep(2)
    else:
        print("False!Please check %s!"%i)
        log.write("比较失败!请检查安装包--%s--是否可用!\n"%i)
        break
log.write("共测试 %s 个包,%d 个通过。"%(countPak,countOK))
bat文件内容:
@echo off

cls

color 79
@ ECHO.
@ ECHO.
@ ECHO.   ==============渠道包测试=============
@ ECHO.  
@ ECHO.       ...开始测试,请不要关闭本窗口...
@ ECHO.
@ ECHO.   =====================================
@ ECHO.  

monkeyrunner %~dp0ApkTest.py

@ ECHO.
@ ECHO.
@ ECHO.
@ ECHO. 测试结束,结果存放在 ./Apk_Test/log 
echo. & pause
只是使用monkeyrunner的截图对比功能做了简单的图片对比,但是能减少一点工作量。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值