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的文章,建议不要尝试,手机容易变砖或者不断重启。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
monkeyrunner之夜神模拟器的安装与使用(2)
-
monkeyrunner之夜神模拟器的安装与使用(2)
-
adb连接夜神模拟器(包括安装adb,夜神模拟器)需要将夜神模拟器的版本号与adb版本一致
-
Sublime text 2/3 中 Package Control 的安装与使用方法,sublimepackage
-
Python爬虫入门教程 47-100 mitmproxy安装与安卓模拟器的配合使用-手机APP爬虫部分
-
web前端开发之JavaScript:Koa2框架的安装与使用
-
【开发工具】【i2c-tools】I2C总线调试工具(i2c-tools)的安装与使用
-
Sublime text 2/3 中 Package Control 的安装与使用方法,sublimepackage
-
phpmyadmin的安装与使用图文教程第1/2页_PHP教程
-
Sublime text 2/3 中 Package Control 的安装与使用方法,sublimepackage_PHP教程