Android 自己主动化測试(3)<monkeyrunner> 依据ID查找对象&touch&type (python)
我在之前的两篇文章中用java来实现过 Android 自己主动化測试(1)怎样安装和卸载一个应用(java)、Android
自己主动化測试(2)依据ID查找对象(java)。 可是本质上都是用monkeyrunner相应的java lib 来实现的。可是相关的文档很少。假设真的要用monkeyrunner来做功能性的自己主动化測试。强烈还是推荐使用python语言
1、monkey runner
The monkeyrunner tool provides an API for writing programs that control an Android device or emulator from outside of Android code.
With monkeyrunner, you can write a Python program that installs an Android application or test package, runs it,
sends keystrokes to it, takes screenshots of its user interface, and stores screenshots on the workstation.
The monkeyrunner tool is primarily designed to test applications and devices at the functional/framework level and for running unit test suites,
but you are free to use it for other purposes.
monkeyrunner 工具提供了一个从Android源代码外部敲代码控制一个Android设备或者模拟器的API。
你能够用monkeyrunner写一个Python程序,来装一个Android应用和測试包。执行它,发key事件,截屏,存在本地。
monkeyrunner工具的设计起源于在功能/框架层面来測试应用和设备。和跑单元測试的測试套件
2、例子实现
2.1代码实现功能: 进入robot dream的页面mainActivity,找到id为center_image 的button发生点击事件,然后对弹出的对话框中再次找到id为button1的button,进行二次确认。
from com.android.monkeyrunner.easy import EasyMonkeyDevice, By
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice if __name__ == '__main__': import codecs
codecs.register(lambda name: codecs.lookup('utf-8') if name == 'cp65001' else None) print ('test start')
device = MonkeyRunner.waitForConnection() easyMonkey = EasyMonkeyDevice(device)
print ('start robot dream mainActivity') device.shell('am start com.robot.dream/com.robot.dream.mainActivity') MonkeyRunner.sleep(3)
#easyMonkey.touch(MonkeyDevice.DOWN_AND_UP, By.id("id/center_image")); by = By.id("id/center_image");
print (by)
easyMonkey.touch(by,MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(3) hierachy_view = device.getHierarchyViewer()
print(hierachy_view) view_node = hierachy_view.findViewById('id/center_image')
items_node = view_node.children
print (len(view_node.children)) print ('touch 2')
easyMonkey.touch(by,MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(3) by2 = By.id('id/button1')
print (by2)
print (easyMonkey.visible(by2)) vn2 = hierachy_view.findViewById('id/button1')
print (dir(vn2))
print (getattr(vn2, 'name'))
print (vn2.id) easyMonkey.touch(by2, MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(3)
2.2 代码实现功能: 进入robot dream的登陆页面LoginActivity,依据id为login_account找到登陆编辑框TextEditor输入usernameabc, 依据id为login_pwd找到password编辑框TextEditor输入passwordabc123, 最后找到id为login_button的登陆按钮。成功登陆
from com.android.monkeyrunner.easy import EasyMonkeyDevice, By
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice if __name__ == '__main__':
import codecs
codecs.register(lambda name: codecs.lookup('utf-8') if name == 'cp65001' else None) print ('test start')
device = MonkeyRunner.waitForConnection()
easyMonkey = EasyMonkeyDevice(device) print ('start login')
device.shell('am start com.robot.dream/com.robot.dream.LoginActivity') MonkeyRunner.sleep(3) by = By.id("id/login_account")
print (easyMonkey.visible(by))
easyMonkey.type(by,'abc')
MonkeyRunner.sleep(1)
device.press('KEYCODE_ENTER')
MonkeyRunner.sleep(1)
device.press('KEYCODE_BACK')
MonkeyRunner.sleep(1) by2 = By.id('id/login_pwd')
print (easyMonkey.visible(by2))
easyMonkey.type(by2,"abc123")
MonkeyRunner.sleep(1)
device.press('KEYCODE_ENTER')
MonkeyRunner.sleep(1)
device.press('KEYCODE_BACK')
MonkeyRunner.sleep(1) by3 = By.id('id/login_button')
print (easyMonkey.visible(by3))
easyMonkey.touch(by3,MonkeyDevice.DOWN_AND_UP)
MonkeyRunner.sleep(1) device.press('KEYCODE_BACK')
3、总结:
使用monkeyrunner 使用id来查找控件。使用上EasyMonkeyDevice的Touch、Type等几个基本操作,就能够完毕非常多主要的功能性測试了。
使用monkeyrunner 的优点,測试程序执行的环境是真实的场景下的环境。
使用monkeyrunner的局限性,无法像单元測试那样通过Assert来进行功能校验。
4、后面会介绍些 Android monkeyrunner &Android UI Test &Android Code Coverage Test
Android 自己主动化測试(3)<monkeyrunner> 依据ID查找对象&touch&type (python)的更多相关文章
- Android自己主动化測试解决方式
如今,已经有大量的Android自己主动化測试架构或工具可供我们使用,当中包含:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolect ...
- Android自己主动化測试之Monkeyrunner用法及实例
眼下android SDK里自带的现成的測试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但事实上是完全然全不同的两个工具,应用在不同的測试领域.总的来说,monke ...
- 【金阳光測试】大话Android自己主动化測试--Android自己主动化系列(1)--金阳光于2013年4月份
Android自己主动化測试框架和工具在四年多的发展日趋成熟. 从五年前的第一代自己主动化架构演进到眼下第四代(本系列讲座第7篇后将具体剖析第三代和第四代自己主动化框架)从曾经最早谷歌推崇的monke ...
- Android 自己主动化測试之------ Monkey工具
尽管 一般公司都有专门的測试人员,可是有时候 免不了 我们既要去开发产品,也要去測试产品,測试产品.有些机械化的 点界面的操作,谷歌已经给我们提供了工具.Monkey, 猴子測试. 什么是Monkey ...
- Android自己主动化測试——CTS測试
一.为什么须要兼容性測试(下面称CTS)? 1.1.让APP提供更好的用户体验.用户能够选择很多其它的适合自己设备的APP.让APP更稳定. 1.2.让开发人员设计更高质量的APP. 1.3.通过CT ...
- 使用Adt自带的工具进行Android自己主动化測试(三)
在这个系列的上一篇文章中,我们介绍了MonkeyRunner,并提到假设依据坐标来编写自己主动化脚本的话存在着一定的局限性(点击文末"阅读原文"能够打开这篇文章查看).这篇文章将进 ...
- Android Monkey自己主动化測试
前言 假设你做Android开发,还没有使用过Monkey进行測试,那么今天看到这篇文章,希望能解决你Android測试中的一些问题.起码能帮你省点測试的时间而且发现很多其它的问题. Monkey简单 ...
- MAC中在eclipse luna上搭建移动平台自己主动化測试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录
这几天由于原来在用的hp laptop的电池坏掉了,机器一不小心就断电.所以仅仅能花时间在自己的mackbook pro上又一次搭建整套环境.大家都知道搭建好开发环境是个非常琐碎须要耐心的事情,特别是 ...
- iOS自己主动化測试的那些干货
前言 假设有測试大佬发现内容不正确.欢迎指正,我会及时改动. 大多数的iOS App(没有持续集成)迭代流程是这种 也就是说.測试是公布之前的最后一道关卡.假设bug不能在測试中发现,那么bug 就会 ...
随机推荐
- 【JAVAWEB学习笔记】11_XML
今日内容介绍 编写服务器软件,访问指定配置内容 访问tomcat下已经发布的web项目 今日内容学习目标 可以编写xml存放任意内容 通过DTD约束编写指定格式的XML 通过Schema约束编写指定格 ...
- U2随笔
Html 结构化 CSS 样式 JavaScript 行为交互 1.JavaScript基础 2.JavaScript操作BOM对象 3.JavaScript操作DOM对象***** 4.JavaSc ...
- poj2531(深搜剪枝)
题意就是把节点分成A.B两组,节点间距C给了,要求解分组的方法,使得∑Cij (i∈A,j∈B)最大. 首先把所有节点都放在一组,然后采用深度优先搜索的方法,对每一个节点都做判断是否应该移到另一组去, ...
- Python协程(上)
几个概念: event_loop 事件循环:程序开启一个无限的循环,程序员会把一些函数注册到事件循环上.当满足事件发生的时候,调用相应的协程函数. coroutine 协程:协程对象,指一个使用asy ...
- 【BZOJ 2654】 MST
2654: tree Description 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. Input 第一行V,E,need分别表示 ...
- 【期望DP】BZOJ4008- [HNOI2015]亚瑟王
题目大意 有\(n\)张卡牌,\(r\)轮游戏.每张卡牌只能用至多一次,每张卡牌被用到的概率为\(p_i\).现在从左往右轮,直到最右一张卡片或者某张卡片被用到.如果某张卡牌被用到,产生\(d_i\) ...
- bzoj 3390: [Usaco2004 Dec]Bad Cowtractors牛的报复 -- 最大生成树
3390: [Usaco2004 Dec]Bad Cowtractors牛的报复 Time Limit: 1 Sec Memory Limit: 128 MB Description 奶牛贝 ...
- Codeforces Beta Round #4 (Div. 2 Only) D. Mysterious Present 记忆化搜索
D. Mysterious Present 题目连接: http://www.codeforces.com/contest/4/problem/D Description Peter decided ...
- linux系统相关、硬件、资源 - 相关命令
分类命令: 1.1.系统 # uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本 # ...
- centos安装pcre
安装pcre前需要已安装gcc工具 1.跳转下载目录 cd install-file 2.下载pcre wget ftp://ftp.csx.cam.ac.uk/pub/software/progra ...