monkeyrunner2

本文介绍了一款用于自动安装、运行并截图Android应用在不同设备上的MonkeyRunner工具,详细解释了其环境配置、脚本编写流程及功能实现,包括安装apk、运行指定activity、截图保存等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近,做android项目测试,测试一个应用程序在多个设备中分辨率是否合适,麻烦得要命,不停的截图比较,前一段时间,研究了一下monkeyrunner ,决定通宵写一个实用性强的monkeyrunner来方便测试使用

前一段时间写的monkeyrunner资料

http://youxilua.blog.51cto.com/3357586/772666

功能说明:

  1. 可以自动安装apk到android模拟器或者android实机
  2. 可以截取设定好activity运行在android模拟器或者android实机上的效果图
  3. 截图根据设备名和截取时间保存
  4. 能够自动设别所有运行中的android模拟器或者android实机
  5. 能够自动安装在特定文件夹下所有的apk文件到android模拟器或者实机

功能实现:

环境配置:

  • 设置好android /tootls 和 android /platform-tools 目录的到环境变量中,确保adb命令能够在cmd下正常运行

脚本编写:

该功能需要创建以下几个文件

componentName.txt

使用约定

每一行为需要运行的activity的完整名字

例如:

kg.tom/.HandlerThreadActivity
kg.monkey/.MonkeyActivity

takeSnap.bat
  
  1. @echo off
  2. rem 获取当前运行设备 adb devices > devices.txt rem
  3. 获取APK文件 dir apk /B > apk.txt rem 运行monkeyrunner
  4. 脚本 monkeyrunner work.py

xxxx

核心运行脚本:

  
  1. #导入我们需要用到的包和类并且起别名
  2. import sys,time,datetime from com.android.monkeyrunner import
  3. MonkeyRunner as mr from com.android.monkeyrunner import MonkeyDevice as
  4. md from com.android.monkeyrunner import MonkeyImage as mi deviceslist = []
  5. devices = [] snapshot = [] templist = [] f = open("devices.txt") while True:
  6. line = f.readline() if line: templist.append(line.strip())
  7. else: break;
  8. f.close() templist.pop() for i in range(len(templist)):
  9. deviceslist.append(templist[i].split('\t')) fc = open("componentName.txt")
  10. complist = [] while True: comp = fc.readline() if comp:
  11. complist.append(comp.strip())
  12. else: break; fc.close() fp = open("apk.txt") apklist = []
  13. while True: apk = fp.readline() if apk:
  14. apklist.append(apk.strip()) else:
  15. break; print 'apk list :'print apklist print 'start componentName list :'
  16. print complist print 'devices list:'print deviceslist for i in range(1,len(deviceslist)):
  17. print 'current devices:' print deviceslist[i]
  18. devices.append(mr.waitForConnection(1.0,deviceslist[i][0]))
  19. #安装apk文件
  20. for j in range(len(apklist)):
  21. devices[i-1].installPackage('apk/'+apklist[j])
  22. #启动activity
  23. for k in range(len(complist)):
  24. print 'current start activity:'
  25. print complist[k]
  26. devices[i-1].startActivity(component=complist[k])
  27. #设置延时秒数
  28. mr.sleep(5.0)
  29. #----------------
  30. #这里可进行一定的UI操作
  31. #----------------
  32. #mr.sleep(3.0)
  33. #进行截图
  34. snapshot.append(devices[i-1].takeSnapshot())
  35. print 'end snapshot'
  36. #创建时间字符串
  37. t = time.strftime("%Y-%m-%d-%X",time.localtime())
  38. t = t.replace(":","-")
  39. #保存截图
  40. package = complist[k].replace('/.','.')
  41. snapshot[0].writeToFile('takeSnapshot/'+deviceslist[i][0]+'-'+t+'-'+package+'.png','png');
  42. snapshot.pop()
由于之前毫无编写python的经验,只能写成这样了,欢迎高手补充!!!!!!

使用:

把tools文件夹里面的全部文件,同样放在android sdk tools 文件夹下即可,运行takeSnap.bat就可以获取到多个设备运行时的截图了,这个期间…你可以选择去泡一杯咖啡…耗时情况…看你要测试几个设备,还有如何测试了……

效果图:

三个虚拟机,在一台实机,测试两个apk在这些设备的运行境况

以下为全部截图文件:

以后可能会更新的部分和改善的地方

1,支持从外部读取monkeyrunner 脚本进行多设备运行…其实..现在这个也可以…只是没写上

2,同一样设备的截图放置在一样设备名的文件,(这个…其实补充起来也很快…不过,要做完善就要判断设备名与创建文件名是否合法等等,不过…我感觉,将所有截图放到一个文件夹下更方便用来比较,就没写了,有兴趣的自行补充…同时,也顺便贴到这里来吧…)

3,由于,本人的脚步编写功底实在是烂,不知道如何在运行环境中设置环境变量,就不得已要在android sdk tools目录 下运行,如果,觉得这个脚步还可以,希望帮忙完善,能够达到在任意目录下…

4,当设备是离线状态无法判断,不过,在以上的脚本中已经实现了获取设备的状态,只是,很少,碰到就懒得补充了….

5,如果,出现无法连接设备…那么请再运行一遍…如果…还不行…就重启吧…这跟脚本没关系吧…貌似…就是有这种问题…

6,最后,附上下载地址:

http://www.kuaipan.cn/file/id_2622545685699681.html

原文:http://youxilua.blog.51cto.com/3357586/772652

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值