android 自动化测试之MonkeyRunner学习(二)

简介:

上次说到已经配好了MonkeyRunner的运行环境,现在讲解怎么进行简单的MonkeyRunner测试。这个拖了很久才有时间和心情总结一下。真是计划赶不上变化啊。

就不说废话了。http://developer.android.com/tools/help/MonkeyDevice.html 这个地址是android上的MonkeyRunner官方文档地址。上面关于MonkeyRunner的一些方法说的很详细。本篇不是详细解释MonkeyRunner方法的文章,只是根据我的理解,结合自己的一个例子讲解一下怎么使用MonkeyRunner写测试程序。

MonkeyRunner工具共有三个类:MonkeyRunnerMonkeyDeviceMonkeyImage

一、MonkeyRunnner类:

        这个类主要用于把MonkeyRunner连接至真机或者模拟器,另外有个显示提示信息的alert方法和一个选择方法比较常用。

二、MonkeyImage类:

        这个类主要是测试过程中,用来保存测试截图,把图片保存成各种格式,并且可以比较两个MonkeyImage对象。

        主要常用的有两个方法:writeToFile (string path, string format) ,这个是保存截图的位置,和命名,可以把图片保存到sdcard里面,也可以保存到电脑里面;sameAs (MonkeyImage other, float percent) ,这个用来比较两个截图是否相同,结果为boolean值。

三、MonkeyDevice类:

        这个类的方法就多了一下,主要提供了安装和卸载程序包、启动一个活动及操作键盘等事件的方法。像里面的startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags) 启动一个应用,press (string name, dictionary type)点击控件 ,touch (integer x, integer y, integer type)点击控件(通过坐标定位) ,drag (tuple start, tuple end, float duration, integer steps) 拖拉控件等等方法比较常用。

      MonekeyRunner这个测试工具用起来不算太难,下面给出一段代码简单解释一下:

  FetionTest.py

 

    #coding=utf-8    Python程序的第一句,添加这句使注释支持中文

    # 导入需要的MonkeyRunner的包,也可以是自己写的类,如果文件很多的话

    from  com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage

    #连接真机,里面要写正确自己的真机对应的名字,cmd下命令下,可以用adb devices 看到

    devices1=MonkeyRunner.waitForConnection(5,"1234567890ABCDEF")

    #连接模拟器

    devices2=MonkeyRunner.waitForConnection(5,"emulator-5554")

    #启动飞信的主界面,这是我测的飞信程序,里面主要是配好飞信的包名和启动Activity

      devices1.startActivity 

   (component = 'cn.com.fetion/.android.ui.activities.StartActivity')

   devices2.startActivity

   (component = 'cn.com.fetion/.android.ui.activities.StartActivity')

   #休眠8秒,便于帐号的登录

   MonkeyRunner.sleep(8.0)

   #点击我的好友一栏,这里使用的是坐标方法

    devices1.touch(202,258,"DOWN_AND_UP")

   #选中好友

   devices1.touch(222,326,"DOWN_AND_UP")

   devices1.touch(442,325,"DOWN_AND_UP")

   # 点击“加入黑名单”

   devices1.touch(223,563,"DOWN_AND_UP")

   # 下面是进行截图,和保存图片

   result1 = device1.takeSnapshot()

   result1.writeToFile('E:\slack01.png','png')

   #点击返回键,可以找到模拟器上任何一个建对应的关键值,这个在官方文档里可以查到

   device1.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)

   result2 = device1.takeSnapshot()

   result2.writeToFile('E:\slack02.png','png')

     这个程序就简单说这些,另外可以对自己的程序进行优化,可以把不同的测试case封装到一个方法里,也可以把一些配置设置成全局变量,然后在不同的类里进行调用。这些需要简单了解一下Python的编程知识。

   下面说一个比较好用的获取坐标的工具。就是用来获取真机上坐标的工具,当我们点击真机上的空间时,能显示真机上的点击点的坐标。

这个是一个可以自己定义的python文件,只有几句话:

from com.android.monkeyrunner import MonkeyRunner as mr

from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder

里面添加你的真机的名字

device = mr.waitForConnection(5,"MSM8225QRD5")

recorder.start(device)

比如,我把它定义为monkey_recorder.py, 然后放在G盘,在cmd下运行 monkeyrunner monkey_recorder.py ,就会出现如下界面:

 

当我们在这个工具上点击时,真机也会跟着执行,并且会显示每一步我们点击的位置的坐标,比如,我点击打开音乐播放器会记录如下:

 

 

这个工具的好只有处你用过几次才知道的,呵呵,反正有些应用程序里很小的图标只能通过坐标获取点击事件,这个工具的优势就显示出来了。另外,需要注意,这个是不能用来获取模拟器坐标的,模拟器上的坐标只有自己下个截图工具,来量取坐标了。这一点确实很蛋疼。

软件工具都是这样,没有绝对的便利。MonkeyRunner也不例外。呵呵,这一次就写这么多吧,这个工具简单的使用介绍的也差不多了,更多的还需要自己去摸索,熟能生巧嘛。希望大家能多多分享,多多交流。



本文转自 风泊海上 51CTO博客,原文链接:http://blog.51cto.com/fengbohaishang/962705


相关文章
|
4月前
|
Android开发 iOS开发
android自动化编译
android自动化编译
|
5月前
|
安全 物联网 测试技术
构建未来:Android与IoT设备的无缝交互深入探索软件自动化测试的未来趋势
【5月更文挑战第30天】在物联网(IoT)技术快速发展的当下,Android系统因其开放性和广泛的用户基础成为了连接智能设备的首选平台。本文将探讨如何通过现代Android开发技术实现智能手机与IoT设备的高效、稳定连接,并分析其中的挑战和解决方案。我们将深入挖掘Android系统的底层通信机制,提出创新的交互模式,并通过实例演示如何在Android应用中集成IoT控制功能,旨在为开发者提供一套可行的指导方案,促进IoT生态系统的进一步发展。
|
4月前
|
Java Android开发 Python
自动化编译错误 cocos2dx 3.0beta2 android
自动化编译错误 cocos2dx 3.0beta2 android
|
5月前
|
数据采集 Java 开发工具
一文2500字从0到1教你搭建Android自动化python+appium环境
一文2500字从0到1教你搭建Android自动化python+appium环境
一文2500字从0到1教你搭建Android自动化python+appium环境
|
5月前
|
存储 网络协议 测试技术
【如何学习Python自动化测试】—— Cookie 处理
【如何学习Python自动化测试】—— Cookie 处理
|
5月前
|
Web App开发 测试技术 Python
【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更新driver
【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更新driver
|
5月前
|
测试技术 BI Python
【如何学习Python自动化测试】—— HTMLTestRunner 生成测试报告
【如何学习Python自动化测试】—— HTMLTestRunner 生成测试报告
|
5月前
|
Java 测试技术 数据库连接
【如何学习Python自动化测试】—— Python 的 unittest 框架
【如何学习Python自动化测试】—— Python 的 unittest 框架
|
6天前
|
机器学习/深度学习 运维 Cloud Native
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化时代,运维作为信息技术的重要支柱,其效率与创新能力直接关系到企业信息系统的稳定性和业务连续性。本文将探讨如何通过技术手段,实现运维从传统手工操作向自动化、智能化的转变,进而构建一个高效、可靠的运维体系。我们将从自动化工具的应用开始,逐步深入到智能运维的实践,最终展望云原生架构下的运维未来趋势。
|
9天前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化时代,运维作为保障企业IT系统稳定运行的关键环节,正经历着前所未有的变革。本文将探讨如何通过实施自动化和引入智能化技术,构建一个更加高效、可靠的运维体系,以应对日益复杂的业务需求和技术挑战。
22 1
下一篇
无影云桌面