适用平台:Android,代码几个月前写的,有问题请及时回复。
本代码会依次安装当前目录下的APK安装包,之后执行Monkey测试,然后卸载掉换下一个,继续重复执行,如出现Cransh,会自动保存在当前目录的log文件夹内。另:Monkey种子数为随机数。Android包名请自行替换

#!/usr/bin/env python
#coding=utf- import os
import time
import random
import re apks = [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[]=='.apk']
for apk in apks:
print '安装'+apk
os.popen('adb install ./'+apk).readlines()
print '执行Monkey脚本'
output = os.popen('adb shell monkey -p xxx.xxxxxx.xxx -s %s -v-v-v --throttle 500 1000' % random.randint(,)).read() #请手动替换-p参数后面的apk包名
pattern = re.compile(r'crash',re.IGNORECASE)
result = pattern.findall(output)
if len(result)>:
dt = time.strftime('%Y-%m-%d-%H-%M-%S')
logfilename = "log_"+apk.split('.apk')[0]+"_"+dt
input = open('./log/'+logfilename+'.log','w')
input.write(apk+'执行monkey时发生crash,日志:')
input.writelines(output)
input.close()
print apk+':执行monkey时发生异常'
print '测试完成,卸载'+apk
os.popen('adb uninstall xxx.xxxxxx.xxxxxxx') #请手动替换后面的apk包名

对当前目录下的所有APK包执行Monkey测试,并自动保存Crash日志的更多相关文章

  1. IOS操作系统上执行monkey测试

    IOS操作系统上执行monkey测试 IOS操作系统不像Android系统那么方便,各种限制也比较多,目前我的建议还是直接在模拟器上执行monkey测试.如果需要在真机上面执行,可以参考文档: htt ...

  2. 乐固加固后windows下实现给apk签名

    遇到了这样一个问题:我们已经在centos下签名生成好的apk,拿到腾讯乐固上加固以后,签名没有了,就需要重新签名,我乐滋滋的想,既然原来是在centos下签名的,那再去centos上签名一次就好了, ...

  3. monkey测试跑多个apk|monkey命令

    1.如何跑多个apk的monkey? 黑名单:执行除了黑名单中以外的apk: 白名单:只执行在白名单中的apk. 黑名单的设置方法: a.创建一个名称为blacklist的txt文档,在文件中输入应用 ...

  4. 修改APK包并push到system/app路径下安装

    在工作中,经常遇到需要修改apk包里的资源文件,达到检验不同配置下程序运行情况的目的. 过程如下: 1.首先连接手机,进入命令行,输入:adb root,使得adb获取root权限. 2.输入:adb ...

  5. Linux下如何让jar包程序在后台一直执行

    Linux下如何让Jar包程序在后台一直执行 shell命令 nohup java -jar xxx.jar & &:让程序后台执行. nohub:让程序控制台输出转移到nohub.o ...

  6. mac 查找当前目录下所有同一类型文件,并执行命令行

    以TexturePacker举例 MAC下用TexturePacker命令行打包当前目录下所有的 *.tps文件 1.配置好tps文件需要配置好路径.参数等.(也可不配置,用命令行实现.具体参考:ht ...

  7. Mac下对Android apk反编译

    在Mac上进行反编译apk,需要三个工具,分别为(附下载地址): apktool,下载Mac版 作用:资源文件获取,能够提取出图片文件和布局文件进行使用查看 dex2jar,下载最新的即可,目前是2. ...

  8. Android获取APK包名的几种方法

    Android获取APK包名的几种方法:1.adb shell pm list package -f | findstr 关键字 #只能获取到包名,主Activity名无法获取到 2.使用aapt-- ...

  9. 搭建ionic3-angular5 开发环境并打包成安卓apk包教程

    安装node.js 搭建ionic3-angular5 开发环境,首先查看本地电脑是否安装node环境,打开终端,输入 命令: node -v 没有去安装nodejs  网址:http://nodej ...

随机推荐

  1. 218. The Skyline Problem (LeetCode)

    天际线问题,参考自: 百草园 天际线为当前线段的最高高度,所以用最大堆处理,当遍历到线段右端点时需要删除该线段的高度,priority_queue不提供删除的操作,要用unordered_map来标记 ...

  2. 【leetcode】501. Find Mode in Binary Search Tree

    class Solution { public: vector<int> modes; int maxCnt = 0; int curCnt = 0; int curNum = 0; ve ...

  3. 【数据结构】6.java源码ArrayList

    关于ArrayList的源码关注点 1.从底层数据结构,扩容策略2.ArrayList的增删改查3.特殊处理重点关注4.遍历的速度,随机访问和iterator访问效率对比 1.从底层数据结构,扩容策略 ...

  4. 5. Spark Streaming高级解析

    5.1 DStreamGraph对象分析 在Spark Streaming中,DStreamGraph是一个非常重要的组件,主要用来: 1. 通过成员inputStreams持有Spark Strea ...

  5. 基于Spark2.X系列的累加器和Streaming基础

    一.累加器API 关于累加器,前面我也写了一篇博客,顺便粘贴这儿,对比学习,Spark学习之编程进阶总结(一).Spark 2.0系列引入了一个更加简单和更高性能的累加器API,如在1.X版本中可以这 ...

  6. KindEditor 简单使用笔记

    1.在官网下载最新版本  http://kindeditor.net/demo.php 2.在页面中加上如下代码 <textarea id="editor_id" name= ...

  7. Springboot html vue.js 前后分离 跨域 Activiti6 工作流 集成代码生成器 shiro 权限

    官网:www.fhadmin.org 特别注意: Springboot 工作流  前后分离 + 跨域 版本 (权限控制到菜单和按钮) 后台框架:springboot2.1.2+ activiti6.0 ...

  8. fulltext全文索引的使用

    Fulltext全文索引 Fulltext相关属性 查看数据库关于fulltext的配置 SHOW VARIABLES LIKE 'ft%'; -- ft就是FullText的简写 ft_boolea ...

  9. JAVA项目之增删改查

    public class ProductDao { // 查询所有商品 // BeanListHandler查询所有商品 public List<Product> getAll() thr ...

  10. Flask 和 Django 框架的区别

    1)Flask Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过 Flask自由.灵活,可扩展性强,第三方库的选 ...