由于工作需要,开始研究android的自动化测试,多年不曾触摸代码的我,需要重新拾起了。
研究了一个星期,现在刚刚明白一点monkeyrunner的操作原理,蚂蚁移山,我要一点一点的啃了。
今天先记下monkey runner怎样连接机子,及其在读取设备信息时遇到的问题以及解决方法。
任务:连接设备,读取设备中所需的信息
问题一:package的引用
其他应用包需在MonkeyDevice,MonkeyRunner之前引用,否则不能引用成功
问题二:LookupError: unknown encoding gbk,由于monkeyrunner是调用JPython来运行的,而JPython与系统默认的编码方式有冲突,这种冲突
是对于我这种中文操作系统的电脑来说真是一个头疼的问题。解决中。。。。。
经过一下午的尝试,终于搞定了,不过却是修改了一下Tools下monkeyrunner.bat,将最后一行添加了点内容,变成
call %java_exe% -Xmx512m -Djava.ext.dirs=%frameworkdir%;%swt_path% -Dcom.android.monkeyrunner.bindir=..\framework -Dfile.encoding=UTF-8 -jar %jarpath% %*
问题解决了,然后就是写脚本了,一个简单的脚本,获取一些基本的信息。
#get the device's information
#imports the monkeyrunner modules used by this program
import os
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
#Connects to the current device
device = MonkeyRunner.waitForConnection()
print 'connect device successfully!!!!'
#get the device's information
sdk = device.getProperty('build.version.sdk')
user=device.getProperty('build.user')
codename = device.getProperty('build.version.codename')
id=device.getProperty('build.id')
print sdk print user,codename,id
最后运行的结果为
connect device successfully!!!
10se.infra REL GINGERBREAD
另,因为这个问题,查了很多资料,虽然最后没什么用,但是有些信息相信以后可能用到,先保存着
chcp 命令, chcp 65001 就是换成UTF-8代码页 chcp 936 可以换回默认的GBK chcp 437 是美国英语