最近一段时间在学习自动化测试,先是使用了monkey,monkeyscript,再接着是现在的monkeyrunner。学习monkeyrunner先是花了大量时间做了准备工作,因为使用monkeyrunner需要用到Python这门语言,所以自己花了大半个月的时间去学习了Python的一些基本语法。
使用monkeyrunner之前需要配置好Android开发环境,这一步应该都好,毕竟做Android开发的很多,网上资料很多,再不行就请教公司里的开发人员帮忙配置。
以下进入正题,第一次写这种东西,有不对之处还请勿喷(写给喷子看),有错误之处还请不吝赐教,共同进步。
一、准备工作
利用monkeyrunner启动应用之前,必须要先知道该应用的package和Activity,如何获取呢?网上大多给的是Android自带的aapt进行获取,在这里给出另一种方法,使用命令行直接获取(前提是手机要连接电脑,并且已经安装了应用,手机处于主页位置):
1、先确认手机已经连接到电脑,并且可以调试:
adb devices
执行这个命令后,终端就会出现对应手机的id,出现id就代表我们可以进行下一步操作,而且这个id我们还有可能会用到。
2、打开terminal,输入命令行:adb logcat | grep START。出来一串结果,如图:
此时点击需要测试的App,又出来一串类似的结果:
补充:这里的前提是我们的手机上已经安装了需要测试的App,但是如果App还在持续开发中,发布频率不是很高,难道每次都要找开发人员安装App,听起来是不是很烦?在这里介绍一个方法,只需要开发人员提供apk,咱们就可以自己安装到手机上,命令行如下:
adb install apk的路径。如图:
二、启动monkeyrunner
很多人都在这里耗费比较长时间,总是起不来monkeyrunner。在刚才的基础上重起(command+N)一个terminal窗口,直接执行命令行:
monkeyrunner
就可以启动了,进入了交互模式。然后在交互模式状态导入monkeyrunner需要的类(一共三个类,这里不是全部用到,但是我一并导入):
from com.android.monkeyrunner import MonkeyRunner,MonkeyImage,MonkeyDevice
回车,又进入交互模式,连接设备(不连接设备,monkeyrunner也是无能为力啊,哈哈):
device = MonkeyRunner.waitForConnection(3.0,'2babc241')
函数后面的括号里的参数可以不填写,如果只链接一部手机。如果电脑同时链接多部手机则需要填写了。解释:参数一,3.0.表示链接手机等待的时间,在这个时间仍未连接成功则抛出异常,参数二,2babc241。表示手机的id。
本节内容最重要的一步,启动应用,输入命令行:
device.startActivity(component='com.zywulian.smartlife/com.zywulian.smartlife.ui.splash.RootActivity')。
这样就会把应用启动了,接着就可以进行其他操作了。
解释:device.startActivity(component='package name/Activity name')。
当然了,这只是最简单的,我们最终还是需要在编辑器里进行编写Python脚本,从而运行脚本。因为我还不会使用把脚本内嵌进来,所以暂时先不讲了,有需要的可以联系我,我们共同学习。
是不是很简单,祝你学习愉快。
注意:如果使用 monkeyrunner 不能直接运行,可以进入到 monkeyrunner 所在的目录下进行操作,想要获取电脑上 monkeyrunner 的位置,使用命令:
which adb
如图:
monkeyrunner 就在 Android sdk 的 tools 目录里,我的位置:
/Users/yonghuming/Library/Android/sdk/tools/bin
如图:
可以直接双击 monkeyrunner,也可以使用命令行在终端启动:“./monkeyrunner”(双引号“”中间的部分是命令行)。运行成功即进入交互模式,如图: