在上一篇文章-安卓开发环境搭建中,我们创建并启动了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中进Android sdk下的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的文章,建议不要尝试,手机容易变砖或者不断重启。

monkeyrunner之夜神模拟器的安装与使用(二)的更多相关文章

  1. 安卓开发笔记(二十):利用夜神模拟器调试运行Android Studio的apk

    一.首先来到夜神模拟器的安装目录下 如下图所示: 再把这整个文件夹添加到我们的windows环境变量里.然后再把android studio 和夜神模拟器都打开,注意必须同时打开而且不能够把夜神模拟器 ...

  2. 夜神模拟器调试web APP

    前言:之前工作之余的时间自己做了一个web APP,但是都是在浏览器上调试的,这次想看看在手机上啥效果,所以下载了一个夜神模拟器 一.下载夜神模拟器 https://www.yeshen.com/ 二 ...

  3. Android项目实战(四十三):夜神模拟器

    一.下载模拟器到电脑 夜神模拟器 二.环境配置 计算机--系统--高级系统设置--环境变量 PATH 里面加入夜神模拟器的安装目录下的bin文件 三.启动模拟器 四.运行cmd命令,cd到夜神安装目录 ...

  4. Android Studio 调用夜神模拟器

    操作系统:Windows 10 x64 IDE:Android Studio 3.3 夜神模拟器 首先,启动夜神模拟器.快捷键WIN + R打开运行窗口,输入cmd,启动cmd.exe. 使用cd命令 ...

  5. APP-2.1-Hbuilder与夜神 & HbuilderX与夜神模拟器连接

    经上一步完成Hbuilder.HbuilderX与夜神模拟器的安装,本次介绍下两者之间的连接设置. 1.三者的安装路径 Hbuilder:E:\SAP UI5\HBuilder HbuilderX:D ...

  6. appium+python 【Mac】Android夜神模拟器

    1.官网下载地址:https://www.yeshen.com/ 2.具体的夜神模拟器的介绍请自查 3.下载安装后夜神模拟器后,打开模拟器,进行相应的配置如下: 4. (1).找到android-sd ...

  7. 移动自动化测试:Android Studio 、Appium、夜神模拟器

    环境是Window 10 64位 第一章:安装Appium Appium和node.js需要一起安装,他们的依赖关系暂不深究. 1. node.js傻瓜式安装 官网地址:https://nodejs. ...

  8. adb连接夜神模拟器

    1.打开夜神模拟器,打开设置,调成手机模式,初次进入的话,进入设置,点击版本号5次,可以激活使用开发者模式,进入后打开USB调试功能 2.打开文件资源管理器,进入夜神模拟器的安装位置,在地址栏输入cm ...

  9. appium连接夜神模拟器方法总结

    使用appium连接模拟器前提条件:appium环境已经搭建完毕,搭建步骤请参考我的博客:appium手机自动化环境搭建 1.下载并安装夜神模拟器:https://www.yeshen.com/ 2. ...

随机推荐

  1. 小清新的jQuery ck-slide 图片轮播

    ck_slide 是一款小清新的jQuery 幻灯片插件,它非常小巧,压缩后仅 3KB,基本功能可以满足.它支持淡入淡出/左右滚动.箭头/圆点控制.自动播放. 在线实例 默认(淡入淡出) 左右滚动 自 ...

  2. JavaScript for循环 闭包 【转】

    个网友问了个问题,如下的html,为什么每次输出都是5,而不是点击每个p,就alert出对应的1,2,3,4,5. <html > <head> <meta http-e ...

  3. Sass学习之路(5)——变量

    1.定义变量:Sass中定义变量的关键字是'$'(毕竟程序员缺钱),并使用冒号(:)进行赋值,例如: $width:200px;//定义了一个名为width的变量,值为200px 2.普通变量和默认变 ...

  4. Oracle11gR2用EXP导出时报EXP-00011错误的解决

    C:\>exp businessdata/businessdata file=dropcol.dmp tables=ACSTRULE,ARREARSCFG,ARREARS_REPORT_ACCT ...

  5. arcgis server 下无法执行复杂的运算符

    1.Open the Administrator Directory and log in as a user with administrative permissions to the site. ...

  6. [Android]Activity跳转传递任意类型的数据、Activity为SingleTask时代替StartActivityForResult的解决方案

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4389674.html 需求:在ActivityA跳转到Acti ...

  7. 关于iOS中的时间

    两类 绝对时间 [NSDate date].CFAbsoluteTimeGetCurrent(),或者gettimeofday(). 返回的是从某一个时刻开始,度过的秒数.会随着用户设置的系统时间更改 ...

  8. jQuery倒计时

    Css------------------------------------------------------------------------------------------------- ...

  9. 【代码笔记】iOS-将log日志保存到文件

    代码: #import "AppDelegate.h" #import "RootViewController.h" @implementation AppDe ...

  10. IOS 如何隐藏tabbar

    系统自带的UITabBarController有时候到不到要求,需要自定义样式. 有一种方法就是在TabBar上面在放一层自己的,正好把原来的遮住. 那么,从Tab进入子的Controller想要隐藏 ...