MonkeyRunner实例讲解

发表于:2015-11-12 10:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:潜龙0318    来源:51Testing软件测试网采编

  一,  终端输入单行命令
  1 开启android 模拟器
  首先使用eclipse的AVD  Manager来创建模拟器antester,然后在命令地下运行c:\emulator @antester即可启动模拟器。
  2 执行monkeyrunner命令:
  进入sdk的tool目录中,比如我的是D:\monkeyrunnertest\adt-bundle-windows-x86_64-20140702\sdk\tools.
  输入monkeyrunner.bat(启动monkeyrunner这个批处理文件)
  (1) 引入monkeyrunner需要的两个模块
  from com.android.monkeyrunner i mport MonkeyRunner, MonkeyDevice 回车
  (2) 把模拟器和monkey绑定,绑定后在monkeyrunner的操作等同于在模拟器的操作
  device = MonkeyRunner.waitForConnection()
  (3) 安装一个apk应用包
  我安装的zhongcho包 d:\robotiumest\apps\zhongchou.apk
  device.installPackage("d:\\robotiumest\\apps\\zhongchou.apk ")
  (4) 接下来,我们就可以启动其中的任意activity了,只要传入package和activity名称即可。命令如下:
  device.startActivity(component = " com.subject.zhongchou/com.subject.zhongchou.activity.SplashActivity ")
  (5) 现在Application启动起来了,就可以根据你的需要执行具体的操作了,比如登录!
  二,monkeyrunner运行python文件
  1,启动Eclipse,新建一个Python工程,创建Src文件夹,然后新建文件LoginTest.py.输入以下代码:
  #-*- coding: UTF-8 -*-
  from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
  from com.android.monkeyrunner.easy import EasyMonkeyDevice
  from com.android.monkeyrunner.easy import By
  import time
  def testlogin():
  #登录测试函数
  device = MonkeyRunner.waitForConnection()
  easy_device=EasyMonkeyDevice(device)
  #安装众筹网的app
  device.installPackage("D:\\robotiumautotest\\apps\\zhongchou.apk")
  #启动App    device.startActivity(component="com.subject.zhongchou/com.subject.zhongchou.activity.SplashActivity")
  time.sleep(3)
  #输入用户名和密码  easy_device.touch(By.id('com.subject.zhongchou:id/loginnumber_phone'),MonkeyDevice.DOWN_AND_UP)    easy_device.type(By.id('com.subject.zhongchou:id/loginnumber_phone'),'XXXXXXX')    easy_device.touch(By.id('com.subject.zhongchou:id/loginnumber_password'),MonkeyDevice.DOWN_AND_UP)    easy_device.type(By.id('com.subject.zhongchou:id/loginnumber_password'),'XXXXXXX')
  #单击登录按钮    easy_device.touch(By.id('com.subject.zhongchou:id/go_numberlogin'),MonkeyDevice.DOWN_AND_UP)
  time.sleep(5)
  def main():
  #此处可以写多个测试函数的调用,也可以安排执行顺序
  testlogin()
  if __name__=='__main__':
  main()
  (2) 在命令行中用cd命令定位到android SDK的路径下的tools目录,运行如下命令:
  D:\monkeyrunnertest\adt-bundle-windows-x86_64-20140702\sdk\tools>monkeyrunner.bat d:\monkeyrunnertest\ZhongChouTest\src\LoginTest.py
  (4)模拟器上就开始安装众筹网的APP,安装完成后,执行打开,登录等操作。
  三,真机运行MonkeyRunner测试用例
  如果想用真机运行测试用例,先将真机连接到电脑上,运行adb devices –l 查看连接是否成功,如果成功,就可以按模拟器上运行的方法来运行测试用例。
  注意:真机运行的时候会出现:“Unable to get view server version from device 284d96a5”的错误,在网上查看了一下,发现出于安全考虑,Hierarchy Viewer只能连接Android开发版手机或是模拟器(准确地说,只有ro.secure参数等于0且ro.debuggable等于1的android系统)。Hierarchy Viewer在连接手机时,手机上必须启动一个叫View Server的客户端与其进行socket通信。而在商业手机上,是无法开启View Server的,故Hierarchy Viewer是无法连接到普通的商业手机。
  具体的解决办法
  方法一:
  见:http://maider.blog.sohu.com/255448342.html,上面说的挺麻熔岩烦的,而且是有风险的,我拿的是公司的测试机,不敢随便尝试。
  方法二:
  解决方法(以华为c8812为例):
  1、找一个开发板的Android固件,我选择的是百度云rom
  该rom下载地址:http://pan.baidu.com/s/1eQIII58
  2、用百度云刷机工具将rom写入手机(注意:写入之前请备份数据。)
  3、等待一会,手机正常开机后就可以了
  4、用adb shell service call window 3来查看
  若返回值是:Result: Parcel(00000000 00000000 '........')" 说明View Server处于关闭状态
  若返回值是:Result: Parcel(00000000 00000001 '........')" 说明View Server处于开启状态
  5、安装busybox应用
  6、设置>开发人员选项>离线日志勾选允许输出离线日志
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号