monkeyrunner之夜神模拟器的安装与使用(2)

在上一篇文章-安卓开发环境搭建中,我们创建并启动了eclipse自带的安卓模拟器,该模拟器不仅启动慢,而且在使用过程中的反应速度也是出奇的差,经常出现卡机现象。为了解决这种现象,因此,我们又寻找到了更加合适的模拟器-夜神模拟器。该模拟器除了安装包有点大之外,其速度是特别快,基本和真机速度无差,甚至是还要更快些,这样一款速度可以媲美真机的模拟器,更加有利于我们后期的安卓自动化测试。下面就从夜神模拟器的选择原因及夜神模拟器的使用两方面讲述。

一、夜神模拟器的选择原因

众所周知,Android studio的模拟器运行速度也很快,可以媲美真机。虽然其运行速度很快,可以满足我们测试的需求。但仍存在以下问题:

(1)Android studio的模拟器无法连接wifi,修改dns,不能用测试环境的版本去进行Monkeyrunner脚本的运行及测试;

(2)如果选用真机,修改dns后,可以用测试版本,但无法采用HierarchyViewer获取控件ID,运行Monkeyrunner会报错。

有人又会说(2)中,使用真机可以选择获取控件坐标,不使用控件ID,这里使用控件ID的原因,见文章尾解释。下面附加一个真机使用HierarchyViewer报错截图。

运行结果:失败

原因:脚本中调用到了HierarchyViewer,但是真机中没有开启view server。

基于上述两种原因,因此,我们选择夜神模拟器作为测试中要使用的模拟器。夜神模拟器对于我们来说,好处就是可以连接wifi,修改dns,速度快,但是内存比较大。

二、夜神模拟器的设置与连接

1.模拟器下载与设置

夜神模拟器占用内存比较大,可以去官网下载:http://www.yeshen.com/。下载完成后,按照安装提示,默认安装或自定义安装即可。

安装成功后,打开模拟器,可以在设置中,设置成显示为手机版,重启后生效。以后,每次启动后,模拟器就是你所设置的手机的大小。同样,可以设置其他选项,这个根据自己需要设置。

2.模拟器的连接

模拟器设置完成后,在cmd窗口中,查看该模拟器是否连接上电脑,输入adb devices,结果显示没有设备连接。

接下来,就是如何使模拟器连接上电脑。打开夜神模拟器,然后cmd中进Androidsdk下的platform-tools目录,然后执行命令:adb connect 127.0.0.1:62001。(如果环境变量中已配置ANDROID_HOME,则直接打开cmd,执行命令:adb connect 127.0.0.1:62001即可)。或者用夜神自带的non_adb.exe,进入到夜神安装目录下的bin目录中,执行命令:adb connect 127.0.0.1:62001。

最后cmd窗口中,输入命令:adb devices,查看夜神模拟器已经连接上。

三、夜神模拟器的使用

和之前的任一款Android模拟器一样,安装我们自己需要的app,我们这里安装XXX的app,此时,由于没有修改wifi的dns,此时,连接的是线上环境。

1.dns的修改

下面,我们修改dns为xx.x.x.x,切换到测试环境。

设置页面,选择WLAN,可以看到已经连接的wifi,长按鼠标左键,弹框修改网络。

点击修改网络,在网络详情页面,勾选“显示高级选项”,修改域名1为xx.x.x.x。

现在可以打开app,输入测试账号进行登录了。

2.模拟器的简单使用

夜神模拟器直接双击打开启动就行。我们现在可以把Hierarchy Viewer打开,获取夜神模拟器中安装的个人端app登录页面的控件ID,并查看一下速度有没有达到我们的需求。

打开android-sdk\tools下面的hierarchyviewer.bat,运行,可以快速获取登录页面的账号输入框、密码输入框、登录按钮的ID。

之后,将app切到登录页面,在夜神模拟器上运行登录页面的Monkeyrunner脚本。脚本如下,可以一步一步执行,也可以直接写到py文件中运行。

具体的脚本如下(脚本的编写会在后面文章中介绍):

from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
from com.android.monkeyrunner.easy import EasyMonkeyDevice #提供了根据ID进行访问
from com.android.monkeyrunner.easy import By #根据ID返回PyObject的方法
device=MonkeyRunner.waitForConnection(5,'127.0.0.1:62001') #连接夜神模拟器
MonkeyRunner.sleep(3.0)
packageName='xxxxxxxx'
activity='xxxxxx'
componentName=packageName+'/'+activity
device.startActivity(component=componentName)
easy_device=EasyMonkeyDevice(device) #必须在activity启动之后
easy_device.touch(By.id('id/input_login_phone'),MonkeyDevice.DOWN_AND_UP) #获取输入账号的控件ID
device.type('18511111111') #在账号输入框中输入账号

查看模拟器中是否有输入。注意,monkeyrunner运行上述py文件时,会失败报错。

原因:python编码的问题, python中默认的编码格式是ASCII格式,所以,没有修改编码格式时无法显示中文。

解决方法:在每一个需要显示中文的python文件中,加入#coding:utf-8、#-*-coding:utf-8 -*-或#vim: set fileencoding:utf-8,我们这边选择#coding:utf-8。

即,在上述的py文件的顶部,加入#coding:utf-8后,再运行,则可以运行成功。

四、控件ID的使用原因

Monkeyrunner需要通过获取控件坐标或控件ID,编写脚本运行。但是,获取控件坐标会由于不同分辨率,导致脚本不能复用,需要重新获取坐标,这样Monkeyrunner脚本的可用性比较差。

所以我们采取通过Hierarchy Viewer获取控件ID编写脚本(后面会有文章讲述获取ID或坐标方法)。但Hierarchy Viewer只能连接Android开发版手机或是模拟器,网上虽然有一些如何把手机root和打开view service的文章,建议不要尝试,手机容易变砖或者不断重启。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Ubuntu中为Android系统上编写Linux内核驱动程序实现方法

    在智能手机时代,每个品牌的手机都有自己的个性特点.正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了.据统计,截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而Android Market的应用软件数量达294738,紧随AppStore后面,并有望在8月份越过AppStore.随着Android系统逐步扩大市场占有率,终端设备的多样性亟需更多的移动开发人员的参与.据业内统计,Android研发人才缺口至少30万.目前,

  • eclipse中运行monkeyrunner脚本之环境搭建(4)

    monkeyrunner脚本使用Python语法编写,但它实际上是通过Jython来解释执行. Jython是Python的Java实现,它将Python代码解释成Java虚拟机上的字节码并执行,这种做法允许在Python中继承一个Java类型,可以调用任意的 Java API . 本文档主要是可以实现在eclipse环境中运行Monkeyrunner脚本.所需要的环境和工具如下:win7 os.jdk.eclipse.sdk.python.jython.模拟器或真机设备. 在前两章中,我们分别

  • android monkey自动化测试改为java调用monkeyrunner Api

    众所周知,一般情况下我们使用android中的monkeyrunner进行自动化测试时,使用的是python语言来写测试脚本.不过,最近发现可以用java调用monkeyrunner Api,用java语言写测试脚本. 于是,就简单研究了一下.这里做一些总结.希望有对在研究的午饭可以有所用处. 开始时,搜素到一些零碎的教程,说使用java调用monkeyrunner时,需要导入android sdk  tools路径下的lib里面的4个包:ddmlib.jar,guavalib.jar,monk

  • Monkeyrunner 常用按键总结

    Monkeyrunner 常用按键               由于最近对Monkeyrunner 经常使用,抽空把常用按键进行了一番整理,提高工作效率,希望也能帮助到大家. MonkeyRunner常用的按键介绍 Home键:KEYCOD_HOME  Back键:KEYCODE_BACK send键:KEYCODE_CALL end键:KEYCODE_ENDCALL 上导航键:KEYCODE_DPAD_UP(现在手机已经没有这个键) 下导航键:KEYCODE_DPAD_DOWN(现在手机已经没

  • Ubuntu中为Android系统上实现内置C可执行程序测试Linux内核驱动程序

    在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序.在这个名为hello的Linux内核驱动程序中,创建三个不同的文件节点来供用户空间访问,分别是传统的设备文件/dev/hello.proc系统文件/proc/hello和devfs系统属性文件/sys/class/hello/hello/val.进一步,还通过cat命令来直接访问/proc/hello和/sys/class/hello/hello/val文件来,以验证驱动程序的正确性.在这一篇文章里,我

  • monkeyrunner之安卓开发环境搭建教程(1)

    在学习monkeyrunner之前,让我们先搭建好eclipse安卓开发环境. 对于程序开发人员而言,eclipse并不陌生,它提供了一个非常广阔的平台来开发程序.同样也可以用它来开发android程序.但是在eclipse中并不能直接开发android程序,需要我们安装一个ADT插件. 在ADT安装前,还有几个前提条件: 1.jdk已安装,并配置好环境变量.关于jdk的环境变量配置这里不做赘述. 2.eclipse已下载并解压.eclipse官网http://www.eclipse.org/d

  • monkeyrunner 脚本录制实例详解

    monkeyrunner脚本录制 1.在窗口输入 monkeyrunner monkey_recorder.py  调用录制脚本工具 2.在窗口输入 monkeyrunner monkey_playback.py  d:\game  执行已经录制的脚本工具 3.E:\Android SDK\ tools>monkeyrunner test.mr 自行写的脚本运行,定位到脚本文件位置,然后执行 1.脚本录制: 该窗口的功能: 1.可以自动显示手机当前的界面 2.自动刷新手机的最新状态 3.点击手机

  • monkeyrunner环境搭建及实例教程(3)

    Monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器. 一.Monkeyrunner简介 1.MOnkeyrunner相对Monkey区别 1)Monkeyrunner工具在工作站上通过API定义的特定命令和事件控制设备或模拟器(可控) 2)精确控制事件之间的事件 3)可以进行:点触屏.拖拽.长按.键盘事件 4)可以智能截图对比和判断 5)回溯出详细具体的BUG路径 2.Monkeyrunner优缺点 1) 能完全模拟人工

  • monkeyrunner之电脑安装驱动(5)

    在Monkeyrunner做自动化测试时,可以使用模拟器,当然也可以选择用真机.不过,要想通过电脑来安装软件,操作手机,则必须先安装手机驱动,而且一般手机连接电脑之后,电脑会自动开始下载驱动.不过也经常会遇到"未能成功安装驱动"的问题.一般驱动安装失败,我们就需要手动安装. 手机开发者选项中,打开USB调试,我们这里以mx3为例,其他手机型号一样,使用数据线连接手机和电脑,电脑右下角会显示"驱动安装中",过了若干秒后,竟然提示"未能成功安装驱动"

  • 解析如何在android中增加gsensor驱动(MMA7660)

    系统原来用的是BOSCH_BMA222的gsensor, 现在要求换成使用MMA7660,我们来看一下怎样增加驱动和调试过程. 1. 修改Makefie首先,修改放置驱动的目录里的Makefile(kernel/driver/misc),添置如下语句: 复制代码 代码如下: obj-$(CONFIG_SENSORS_MMA7660)   += mma7660.o 2. 增加驱动文件 把驱动文件mma7660.c添加到kernel/driver/misc下.3. 修改.config文件,把下面两行

随机推荐