原文地址https://blog.csdn.net/liu_jing_hui/article/details/60955696

最基本脚本功能开始编写

(1)Monkeyrunner和Monkey的区别 
1)Monkeyrunner工具在工作站上通过API定义的特定命令和事件控制设备或模拟器(可控) 
2)精确控制事件之间的事件 
3)可以进行:点触屏、拖拽、长按、键盘事件 
4)可以智能截图对比和判断 
5)回溯出详细具体的BUG路径 
(2)Monkeyrunner优缺点: 
1) 能完全模拟人工所有操作 
2) 有详细的API文档参考 
3) 可以写出智能图像对比脚本 
4) 支持java和Python两种语言脚本 
5) 脚本移植性差 
(3)Monkeyrunner的脚本编写

1) 终端USB调成开发者模式 
2)电脑安装手机驱动

(4)实现一个简单的运行的实例(通过命令行的方式进行实现,同时)

步骤一:打开cmd,输入monkeyrunner,如图所示:

步骤二:进入shell命令交互模式后,首要一件事就是导入monkeyrunner所要使用的模块。直接在shell命令下输入命令: 
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice 
再回车,这步完成我们就可以利用monkeyrunner进行测试工作了。

步骤三:模拟器的链接,下面我们就要Monkeyrunner连接上模拟器,进行一系列操作了。输入命令: 
device=MonkeyRunner.waitForConnection() 
其中,device=MonkeyRunner.waitForConnection(6,’emulator-5554′) 
参数1:超时时间,单位秒,浮点数,默认是无限期地等待。 
参数2:指定的设备名称device_id,默认为当前设备(手机优先,其次为模拟器)

输入命令后,页面上没有错误信息返回,即成功连接设备。

步骤四:app安装并启动。 模拟器启动成功后,我们安装自己想要的apk,这里我们选择qq音乐安装。 
输入命令:device.installPackage(‘F:\QQyinle_439.apk’),其中,参数是APK的相对路径。 
安装成功返回true,此时查看模拟器我们可以在IDLE界面上看到安装的APK的图标了。

步骤五:进行启动 
app安装成功后,现在启动该app,命令为: 
device.startActivity(component=”package名/.activity”) 
首先,我们有必要说一下,如何获取一个app的package名和activity。这里,我们只描述一种获取方式。 
使用aapt,其中aapt是sdk自带的一个工具,在sdk\builds-tools\目录下:

以存储在F盘的qq音乐为例,运行cmd,命令行中切换到aapt.exe目录,

方法一: 
执行命令:aapt dump badging F:\QQyinle_439.apk ,注意,apk路径中一定不能有空格。

由上图可知:package name:com.tencent.qqmusic 
activity:.activity.AppStarterActivity 
方法一由于日志较多,寻找起来比较费劲,所以我们引出方法二。 
方法二(推荐): 
把日志存储在特定的文件中,在文件中通过搜索关键字,得到包名及活动名,这里我把结果输出到F盘的log.txt中: 
aapt dump badging F:\QQyinle_439.apk > F:\log.txt 
到此,已经获取了app的package名和activity。下面,我们真正的启动app。在原有cmd运行窗口,输入命令: 
device.startActivity(component=” com.tencent.qqmusic/.activity.AppStarterActivity “) 
命令执行后,模拟器上的app被启动。这表示命令启动app成功。这里的关键是app的package name和activity对应获取正确,否则启动不了特定app。

(5)在eclipse中进行使用,编写脚本语言。在eclipse中进行创建项目。

步骤一:在File中,New一个Project,并选择PyDev Project。

步骤二: 根据需求,填写项目名称,并选择项目的类型为Jython,点击Finish。

步骤三: 项目新建完成后,单击选中项目,右键,New一个PyDev Module,新建完成后,就可以写python程序了。

步骤四: 现在,我们把Monkeyrunner中写的脚本,直接拷贝到eclipse中,新建的PyDev Module中,包括导包、连接设备、安装app、启动app:

#引入monkeyrunner需要的两个模块:
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
#把模拟器和monkey绑定,绑定后在monkeyrunner的操作等同于在模拟器的操作:
device=MonkeyRunner.waitForConnection()
#安装一个apk应用包 device.installPackage('F:\\QQ_374.apk')
#启动特定的Activity
device.startActivity(component="com.tencent.mobileqq/.activity.SplashActivity")
 

(6)eclipse中的运行Monkeyrunner脚本配置 
步骤一: 菜单栏中选择Run-External Tools-External Tools Configurations,

步骤二: 添加相关配置信息,如下图:

注:以上配置只针对test02.py,如果有新的PyDev Package,要同时更改Working Directory和Arguments的配置。 
模拟器启动后,接下来就可以运行刚才新建的PyDev Module了

在模拟器上,我们可以看到app的自动安装和启动。这说明环境已经配置成功,之后就可以在eclipse中编辑monkeyrunner脚本,并运行。

史上最全的MonkeyRunner自动化测试从入门到精通(2)的更多相关文章

  1. 史上最全的MonkeyRunner自动化测试从入门到精通(3)

    原文地址https://blog.csdn.net/liu_jing_hui/article/details/60956088 MonkeyRunner复杂的功能开始学习 (1)获取APK文件中ID的 ...

  2. 史上最全的MonkeyRunner自动化测试从入门到精通(1)

    原文地址https://zhuanlan.zhihu.com/p/26043620 MonkeyRunner使用 #-*- coding:utf-8 –*- from com.android.monk ...

  3. 最全的MonkeyRunner自动化测试从入门到精通(10)

    三.MonkeyRunner复杂的功能开始学习 (1)获取APK文件中ID的两种方式 Monkeyrunner的环境已经搭建完成,现在对Monkeyrunner做一个简介. Monkeyrunner工 ...

  4. 最全的MonkeyRunner自动化测试从入门到精通(9)

    最基本脚本功能开始编写(1)Monkeyrunner和Monkey的区别 1)Monkeyrunner工具在工作站上通过API定义的特定命令和事件控制设备或模拟器(可控) 2)精确控制事件之间的事件 ...

  5. 最全的MonkeyRunner自动化测试从入门到精通(6)

    eclipse中进行插入PyDev插件的使用步骤一:monkeyrunner环境变量的配置.在Android Sdk中的tools目录下,拷贝路径,进行配置环境变量.与上面的配置方法一样,在这里不做过 ...

  6. 最全的MonkeyRunner自动化测试从入门到精通(5)

    夜神模拟器的安装与配置步骤一:我们为什么会选择使用夜神模拟器呢? 众所周知,Android studio的模拟器运行速度也很快,可以媲美真机.虽然其运行速度很快,可以满足我们测试的需求.但仍存在以下问 ...

  7. 【Github教程】史上最全github用法:github入门到精通

    原文 http://www.eoeandroid.com/thread-274556-1-1.html [初识Github] 首先让我们大家一起喊一句"Hello Github". ...

  8. 最全的MonkeyRunner自动化测试从入门到精通(8)

    在eclipse中的一些剩余配置操作步骤一:pyhon的在eclipse配置,如图所示: 步骤二:jython的在eclipse中的配置, 在window-preference-PyDev-Jytho ...

  9. 最全的MonkeyRunner自动化测试从入门到精通(3)

    一.eclipse的下载安装与配置成安卓开发环境 步骤一:在官网上面进行下载eclipse,官网的网址:https://www.eclipse.org/downloads/ 步骤二:下载完成后可以在你 ...

随机推荐

  1. ros论坛

    ros:http://ros.gaitech.net/forum.php makefile:http://blog.csdn.net/shallnet/article/details/38070745 ...

  2. MySQL<添加、更新与删除数据>

    添加.更新与删除数据 添加数据 为表中所有字段添加数据 INSERT INTO 表名(字段名1,字段名2,……) VALUES(值1,值2,……); insert into 表名 values(值1, ...

  3. Python 爬虫知识点 - 淘宝商品检索结果抓包分析

    一.抓包基础 在淘宝上搜索“Python机器学习”之后,试图抓取书名.作者.图片.价格.地址.出版社.书店等信息,查看源码发现html-body中没有这些信息,分析脚本发现,数据存储在了g_page_ ...

  4. rpm源码安装mysql

    1)访问官网(mysql社区服务器) http://downloads.mysql.com/archives/community/ 2)选择自己需要的版本和对应服务器(例如 服务器是centos 6. ...

  5. Map的key不变,value相加

    判断map中是否含有某个key,如包含则结果value相加,如不包含则新增. 直接上demo吧: package javademo; import java.util.HashMap; import ...

  6. 首个vue.js项目收尾中……

    前言: 4.26号入手vue.js+elementUI,迄今为止我们的工作应该可以暂时告一段落了:下周开始,又是新的“征程”. 过程:站在接近完成的角度来看这个项目,似乎的确有许多事情需要自己阐述. ...

  7. poj_2286 线段树

    题目大意 在墙上贴海报,墙壁是由一排连续的瓷砖铺成,海报贴在墙壁上必须占据连续的几块瓷砖,海报可以互相覆盖,问最后可以看见几张海报(未被完全覆盖). 题目分析 墙壁是由连续的一个区间构成,每个海报占据 ...

  8. Minix2.0内核源代码的组织结构

    Minix2.0操作系统的源代码由两个目录组成:include/目录和src/目录 include/目录包含了操作系统所有的头文件(即.h文件) src/目录下包含了操作系统所有的源文件(.c或.s文 ...

  9. linux时间与Windows时间不一致的解决

    一.首先要弄清几个概念:1. “系统时间”与“硬件时间” 系统时间: 一般说来就是我们执行 date命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间.   ...

  10. 微信小程序 --- action-sheet底部弹框

    action-sheet:从屏幕底部弹出一个菜单,选择: 使用的时候,在给不同的 action-sheet-item 添加不同的事件. 效果: (这里的确定可以有多个) 代码: <button ...