monkey与python结合(学习篇)

2017-11-06  本文已影响0人  橘颂betty
# __author__ ='xjiao
# -*- coding:utf-8 -*-'

import os
import os.path
import time
import glob

# 删除已有测试cmd脚本
path = "E:\\monkey_test\\"
for file in glob.glob(os.path.join(path,'*.cmd')):
    os.remove(file)

# os.system("cls")具有清屏功能
os.system("cls")
# os.popen()执行系统命令并返回执行后的结果
rt = os.popen('adb devices').readlines()

n = len(rt) - 2
print "当前已连接待测手机数为:" + str(n)
aw = raw_input("是否要开始你的monkey测试,请输入(yes or no):")

if aw == 'yes':
    print "monkey测试即将开始......"
    count = raw_input("请输入你要进行的monkey测试次数:")
    testmodel =  raw_input("请输入你是要进行单次测试还是多次连续测试,请输入(1-代表单次测试,2-代表多次连续测试):")
    ds = rang(n)
    for i in range(n):
        nPos = rt[i+1].index("\t")
        ds[i] = rt[i+1].[:nPos]
        dev = ds[i]
        # 获取手机型号
        promodel = os.popen("adb -s " + dev +'shell cat /system/build.prop | find "ro.product.model="').readline()

        #modelname = ('').join(promodel)  #将list转为字符串
        modelname = promodel[0] #从list中取出第一个值
        model = modelname[17:].strip('\r\n')

        proname = os.popen("adb -s" + dev + 'shell cat /system/build.prop | find "ro.product.brand="').readlines() #获取手机名称

        roname = proname[0]
        name = roname[17].strip('\r\n')
        packagename = os.popen(
            "adb -s " + dev + ' shell pm list packages | find "xxx"').readlines()

        package = packagename[0]
        pk = package[8:].strip('\r\n')
        if pk == 'com.xxx':
            filedir = os.path.exists("E:\\monkey_test\\")
            if filedir:
                print "File Exist!"
            else:
                os.mkdir("E:\\monkey_test\\")

            devicedir = os.path.exists("E:\\monkey_test\\" + name + '-' + model + '-' + dev)

            if devicedir:
                print "File exist!"
            else:
                os.mkdir("E:\\monkey_test\\" + name + '-' + model + '-' + dev) #按设备ID生成日志目录文件夹

            w1 = open("E:\\monkey_test\\" + name + '- ' + model + '' + ds[i] + '-logcat' + '.cmd','w')
            # wl.write('adb -s ' + dev + ' logcat -v time ACRA:E ANRManager:E System.err:W *:S')

            wl.write('adb -s ' + dev + ' logcat -v time *:W')
            wl.write('> E:\\monkey_test\\' + '"'+ name  + '-'+ model + '-' + dev + '"' + '\\logcat_%random%.txt\n')
            wl.close()
            if testmodel == '1':
                wd = open("E:\\monkey_test\\" +name + '-' + model + '-' + ds[i] + '-device' + '.cmd', 'w')
                wd.write(
                    'adb -s ' + dev + ' shell monkey -p com.xxx --monitor-native-crashes --ignore-crashes --pct-syskeys 5 --pct-touch 55 --pct-appswitch 20 --pct-anyevent 20 --throttle 200 -s %random% -v ' + count)  # 选择设备执行monkey
                wd.write('> E:\\monkey_test\\' + '"'+ name  + '-'+ model + '-' + dev + '"' + '\\monkey_%random%.txt\n')
                wd.write('@echo 测试成功完成,请查看日志文件~')
                wd.close()
            elif testmodel == '2':
                wd = open("E:\\monkey_test\\" +name + '-' + model + '-' + ds[i] + '-device' + '.cmd', 'w')
                wd.write(':loop')
                wd.write('\nset /a num+=1')
                wd.write('\nif "%num%"=="4" goto end')
                wd.write(
                    '\nadb -s ' + dev + ' shell monkey -p com.xxx --monitor-native-crashes --ignore-crashes --pct-syskeys 5 --pct-touch 55 --pct-appswitch 20 --pct-anyevent 20 --throttle 200 -s %random% -v ' + count)  # 选择设备执行monkey
                wd.write('> E:\\monkey_test\\' + '"'+ name  + '-'+ model + '-' + dev + '"' + '\\monkey_%random%.txt\n')
                wd.write('@echo 测试成功完成,请查看日志文件~')
                wd.write('\nadb -s '+ dev +' shell am force-stop '+ pk)
                wd.write('\n@ping -n 15 127.1 >nul')
                wd.write('\ngoto loop')
                wd.write('\n:end')
                wd.close()
            else:
                print "请确认待测手机"+name + '-' + model +"未安装com.xxx~"

            # 执行上述生成的cmd脚本path='E:\\monkey_test\\'
        for file in os.listdir(path):
            if os.path.isfile(os.path.join(path, file)) == True:
                if file.find('.cmd') > 0:
                    os.system('start ' + os.path.join(path, '"' + file + '"'))  # dos命令中文件名如果有空格,需加上双引号
                    time.sleep(1)
                elif aw == 'no':
                    print('请重新确认所有待测手机是否已通过adb命令连接至pc!')
                else:
                    print "测试结束,输入非法,请重新输入yes or no!"

在网上查找的代码,自己手输入学习一遍

上一篇下一篇

猜你喜欢

热点阅读