• Monkeyrunner 简介及其环境搭建


      Monkeyrunner是通过坐标、控件ID和控件上的文字操作应用的界面元素,其测试用例是用python写的,这样就弥补了monkey只有简单命令无法执行复杂用例的缺陷。Monkeyrunner采用的是客户端服务器的架构,运行在PC上,逐行解释Python代码,将命令发送到Android设备上,既可以手动编写,也可以使用录制回放方式编写测试用例。

      虽然monkeyrunner脚本是使用python编写的,但它实际上是通过Jython来解释执行的。Jython是Python的Java实现,它将Python代码解释成功Java虚拟机上的字节码来执行。这种做法允许在Python中继承一个Java类型,可以调用任意的Java API,也可以复用Java虚拟机自带的垃圾回收机制等。

      Monkeyrunner中的API由com.android.monkeyrunner命名空间中的三个类MonkeyrunnerMonkeyDeviceMonkeyImage组成。

       1.MonkeyRunner

      提供连接到设备或者模拟器的方法,也提供了为monkeyrunner脚本创建UI界面的一些函数,最常用的函数是waitForConnection:

    MonkeyDevice waitForConnetion(float timeout_seconds, string deviceId) 即该函数返回MonkeyDevice对象

       2.MonkeyDevice

      代表一个设备或模拟器,主要封装如安装/卸载应用,启动活动,向应用发送按键或触摸消息等操作,常见API如下。

      1) void installPackage(string path)

      path是PC端的apk路径

      2) void press(string KeyEvent, dictionary type)

      敲击一个按键,type只能是DOWN、UP 或DOWN_AND_UP

      3) void removePackage(string package)

      卸载应用,package为应用的包名,而不是文件名。

      4) void startActivity(string url, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags)

      启动一个活动,而不是一个应用。

      url: 启动活动的意图对象的URL,参看Intent.setData()函数;

      action: 启动活动的意图对象的动作,参看Intent.setAction()函数;

      data: 启动活动的意图对象的数据URL,参看Intent.setData()函数;

      mimetype: 启动活动的意图对象的MIME类型,参看Intent.setType()函数;

      categories: 意图对象种类集合,参看Intent.addCategory()函数;

      extras: 根据启动活动的要求,意图对象所需携带的额外数据,参看Intent.putExtra()函数;

      component: 要启动的组件的全名,组件的全名由应用的包名和组件的类名组成;

      flags: 意图对象的标志集合,参考Intent.setFlag()函数;

      5) MonkeyImage takeSnapshot()

      为设备截图,返回一个MonkeyImage对象。

      6) void touch(integer x, integer y, string type)

      发送触摸消息。

      x: x坐标;

      y: y坐标;

      type: 要发送的触摸事件类型,只能是DOWN、UP或DOWN_AND_UP;

      7) void type(string message)

      输入一个字符串。

      8) void wake()

      唤醒设备

      3. MonkeImage

      这个类型主要封装屏幕抓图,将图片在不同格式间转换,对比两个图片等操作。

    Monkeyrunner简单介绍完了,接下来就是环境搭建了。既然要做monkeyrunner测试,android 环境(Android SDK)必须是搭好的, JAVA环境(JDK)也必须是搭好的,这个应该不用赘述了吧。

    Monkeyrunner是基于python的,所以要安装python的编译器:

    下载地址:https://www.python.org/downloads/

    如果各方面都安装好了,  那monkeyrunner就可以运行了,monkeyrunner是集成在Android SDK中的,目录是:*adt-bundle-windows-x86-20130917sdk oolsmonkeyrunner.bat

    直接cd到:*adt-bundle-windows-x86-20130917sdk ools,之后输入monkeyrunner,如下:

    C:adt-bundle-windows-x86-20130917sdk ools>monkeyrunner
    Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true
    Picked up _JAVA_OPTIONS: -Djava.net.preferIPv4Stack=true
    Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:54:35)
    [Java HotSpot(TM) Client VM (Oracle Corporation)] on java1.8.0_31
    >>>

    则monkeyrunner环境搭建完成。

    提醒广大学习者必须把monkeyrunner相关的脚本都放在"*adt-bundle-windows-x86-20130917sdk ools"目录中,而且运行.py文件都使用绝对路径,否则执行过程中可能会出错!

    可以参考如下博客:http://blog.csdn.net/shy871265996/article/details/9716569

  • 相关阅读:
    Linux 下建立 Git 与 GitHub 的连接
    PHP Redis 对象方法手册
    wampServer 安装 Redis 扩展
    CentOS 与 Ubuntu 使用命令搭建 LAMP 环境
    Xshell 连接 CentOS 7 与 Ubuntu Server
    使用那各VUE的打印功能(print.js)出现多打印一个空白页的问题
    MySql数据库,查询数据导出时会出现重复的记录(数据越多越明显)
    解决 nginx 启动错误 nginx: [emerg] host not found in upstream
    关于nginx配置的一个报错connect() to unix:/tmp/php-cgi.sock failed (2: No such file or directory)
    网站的ssl证书即将过期,需要续费证书并更新
  • 原文地址:https://www.cnblogs.com/yajing-zh/p/4351245.html
Copyright © 2020-2023  润新知