monkeyrunner进行多设备UI测试

来源:互联网 发布:中兴 南京 云计算部门 编辑:程序博客网 时间:2024/06/05 05:33

monkeyrunner进行多设备UI测试

#导入我们需要用到的包和类并且起别名import sys,time,datetimefrom com.android.monkeyrunner import MonkeyRunner as mrfrom com.android.monkeyrunner import MonkeyDevice as mdfrom com.android.monkeyrunner import MonkeyImage as mifrom com.android.chimpchat.hierarchyviewer import HierarchyViewer #根据ID找到ViewNode,对viewnode的一些操作等from com.android.monkeyrunner.easy import EasyMonkeyDevice  #提供了根据ID进行访问方法touch、drag等from com.android.monkeyrunner.easy import By    #根据ID返回PyObject的方法from com.android.hierarchyviewerlib.models import ViewNode as vn #代表一个控件,可获取控件属性templist = []#设置一个空列表,用来放设备内容deviceslist =[]#设置一个空列表,用来放分割后的设备内容devices = []    #设置一个空列表,用来读取放分割后的设备内容snapshot = []#设置一个空列表,用来读取截图text = []#设置一个空列表,用来读取结果文本#已经将设备列表导出adb devices>E:\devices.txt#将设备列表导入到templist中f = open("E:\devices.txt")#读取文件while True:    line = f.readline()#逐行读    print line    if line:        templist.append(line.strip())#删除所读行的空格,增加到templist列表中,默认每个元素后都有\tdevices        print templist    else:        break;f.close() #关闭print templisttemplist.pop(0) #删除下标为0的元素,现在templist列表元素为['emulator-5554\tdevices','emulator-5556\tdevices','']print templistprint len(templist)#将每个元素使用\t分割,并导入到新列表 deviceslist中for i in range(0,len(templist)-1):    deviceslist.append(templist[i].split('\t')) #deviceslist列表元素为[['emulator-5554','devices'],['emulator-5556','devices']]for i in range(len(deviceslist)):#遍历每个元素    print 'current devices:'    print deviceslist[i][0]#只读取元素的前半部分    devices.append(mr.waitForConnection(1.0,deviceslist[i][0]))##devices列表元素为['emulator-5554','emulator-5556']    if not devices:        print >> sys.stderr,"fail"        sys.exit(1)    else:        print 'connnect success'    #启动activity    devices[i].startActivity('com.sky.jisuanji/.JisuanjizixieActivity')    easy_device = EasyMonkeyDevice(devices[i])#初始化EasyMonkeyDevice模块,必须放在startActivity之后,用来通过ID访问控件    hViewer = devices[i].getHierarchyViewer() # 对当前UI视图进行解析    #输入账号    Cotent='6000000891'    device.type(Cotent)    mr.sleep(3.0)    #点击确定    easy_device.touch(By.id('id/register_input_mobile_btn'),device.DOWN_AND_UP)    mr.sleep(30.0)    #输入验证码    Cotent='5957'    device.type(Cotent)    mr.sleep(3.0)    #点击确定    easy_device.touch(By.id('id/register_check_btn'),device.DOWN_AND_UP)    mr.sleep(30.0)    #点击more    easy_device.touch(By.id('id/layout_tabhost_icon'),device.DOWN_AND_UP)    mr.sleep(30.0)    #点击设置    easy_device.touch(By.id('id/appsetting'),device.DOWN_AND_UP)    mr.sleep(30.0)    #点击账号    easy_device.touch(By.id('id/my_account_layout'),device.DOWN_AND_UP)    mr.sleep(30.0)    #点击下线    easy_device.touch(By.id('id/setting_layout'),device.DOWN_AND_UP)    mr.sleep(30.0)    #点击确定下线    easy_device.touch(By.id('id/btn_ok'),device.DOWN_AND_UP)    mr.sleep(5.0)    #进行takeSnapshot截图    snapshot.append(devices[i].takeSnapshot())    print 'end snapshot'    #创建时间字符串    t = time.strftime("%Y-%m-%d-%X",time.localtime())    t = t.replace(":","-")    #保存截图    snapshot[0].writeToFile(deviceslist[i][0]+'-'+t+'-'+'.png','png');    snapshot.pop()    #通过By来获取    text.append(easy_device.getText(By.id('id/text')))    print text[i].encode('utf-8')#打印结果#比较设备输出的结果for i in range(len(devices)-1):    for j in range(1,len(devices)):        if text[i]==text[j]:            print 'true'        else:            print 'false'


0 0