monkeyrunner脚本实践
来源:互联网 发布:软件侵权被起诉 编辑:程序博客网 时间:2024/06/06 17:54
实现程序公司程序的登录、新建患者、删除新建患者的功能
# -*- coding:utf-8 -*- import sysfrom com.android.monkeyrunner import MonkeyRunner as MRfrom com.android.monkeyrunner import MonkeyDevice as MDfrom com.android.monkeyrunner import MonkeyImage as MIfrom com.android.monkeyrunner.easy import EasyMonkeyDevicefrom com.android.monkeyrunner.easy import Byfrom com.android.chimpchat.hierarchyviewer import HierarchyViewerfrom com.android.hierarchyviewerlib.models import ViewNode, Window############获取viewList中节点对象def getChildView(parentId, *childSeq): childView="hierarchyViewer.findViewById('" + parentId +"')" for index in childSeq: childView += ('.children[' + str(index) + ']') print childView return eval(childView)##########获取viewList中某个节点的中心点坐标def getListViewPoint(parentId, *childSeq): list_node = getChildView(parentId, *childSeq) list_node_point = device.getHierarchyViewer().getAbsoluteCenterOfView(list_node) return list_node_point###########获取viewList中某个节点相对屏幕的中心点坐标(绝对坐标)def getListViewAbsolutePoint(list_node, contentWidth, contentHeight, taskbarHeight): screen_height = int(device.getProperty('display.height')) # 得到屏幕Y轴高度 screen_width = int(device.getProperty('display.width')) # 得到屏幕X轴高度 list_node.x = list_node.x + (screen_width - contentWidth) / 2 list_node.y = list_node.y + (screen_height - contentHeight) / 2 + taskbarHeight / 2 return list_node############选择ListViwe中的一条记录def getListViewItem(contentId, taskbarHeight,parentId, *childSeq): sl_depart_point = getListViewPoint(parentId, *childSeq) # 获取科室列表第一个节点的相对中心坐标 currentContent = hierarchyViewer.findViewById(contentId) # 获取科室选择列表的content sl_depart_point = getListViewAbsolutePoint(sl_depart_point, currentContent.width, currentContent.height, taskbarHeight) ##获取科室列表第一个节点的绝对中心坐标 device.touch(sl_depart_point.x, sl_depart_point.y, MD.DOWN_AND_UP) return None###########获取控件的中心点对象def getControlPoint(controlId): control = hierarchyViewer.findViewById(controlId) control_point = device.getHierarchyViewer().getAbsoluteCenterOfView(control) return control_point###########软件登录def login(): componentName = 'com.medex.Activity/.Login' device.startActivity(component=componentName) # 启动应用程序 MR.sleep(1.0) easyMonkey.touch(By.id("id/btn_department_more"), MD.DOWN_AND_UP) # 点击科室右侧下拉框按钮 MR.sleep(0.5) getListViewItem('id/content', taskbarHeight, 'id/select_dialog_listview', 0) # 选择科室列表中的第一条记录 MR.sleep(0.5) easyMonkey.touch(By.id("id/btn_account_more"), MD.DOWN_AND_UP) # 点击用户名右侧的下拉框按钮 MR.sleep(0.5) getListViewItem('id/content', taskbarHeight, 'id/select_dialog_listview', 0) # 选择科室列表中的第一条记录 MR.sleep(0.5) easyMonkey.touch(By.id("id/txtPwd"), MD.DOWN_AND_UP) # 点击密码输入框 device.press('KEYCODE_BACK', 'DOWN_AND_UP') device.type('507507') # 密码输入框中填写'507507' btnLogin_point = getListViewPoint('id/login_btns', 0) # 获取登录按钮的poinit device.touch(btnLogin_point.x, btnLogin_point.y, MD.DOWN_AND_UP) # 点击登录按钮 return None###########新建患者#参数说明:0:姓名 1:性别 2:年龄def newPatient(*patientInfo): btnNewPatient_point = getControlPoint("id/newCase") #获取新建患者按钮中心坐标对象 device.touch(btnNewPatient_point.x, btnNewPatient_point.y, MD.DOWN_AND_UP) MR.sleep(1.0) currentContent = hierarchyViewer.findViewById("id/content") #获取新建患者界面content对象 #输入姓名 txtPatientName_point = getListViewPoint("id/grid_view_new", 1, 1) #获取新建患者界面姓名输入框的中心坐标对象 txtPatientName_point = getListViewAbsolutePoint(txtPatientName_point, currentContent.width, currentContent.height, taskbarHeight) #由于获取到的id/content容器与实际根级容器宽度小40 高度小35 device.touch(txtPatientName_point.x - 20, txtPatientName_point.y -18, MD.DOWN_AND_UP) MR.sleep(5) device.press('KEYCODE_BACK', 'DOWN_AND_UP') device.type(patientInfo[0]) #选择性别 if patientInfo[1] == "男": rbtnSex_point = getListViewPoint("id/rg_gender", 0) #获取性别男单选框相对坐标对象 else: rbtnSex_point = getListViewPoint("id/rg_gender", 1) #获取性别女单选框相对坐标对象 rbtnSex_point = getListViewAbsolutePoint(rbtnSex_point, currentContent.width, currentContent.height, taskbarHeight) device.touch(rbtnSex_point.x - 20, rbtnSex_point.y - 18, MD.DOWN_AND_UP) #输入年龄 txtAge_point = getListViewPoint("id/grid_view_new", 5, 1) #获取年龄输入框相对坐标 txtAge_point = getListViewAbsolutePoint(txtAge_point, currentContent.width, currentContent.height, taskbarHeight) device.touch(txtAge_point.x - 20, txtAge_point.y - 18, MD.DOWN_AND_UP) device.press('KEYCODE_BACK', 'DOWN_AND_UP') device.type(patientInfo[2]) #选择年龄单位 if patientInfo[3] == "岁": rbtnAgeUnit_point = getListViewPoint("id/rg_age", 0) #获取年龄单位岁单选框相对坐标对象 elif patientInfo[3] == "月": rbtnAgeUnit_point = getListViewPoint("id/rg_age", 1) #获取年龄单位月单选框相对坐标对象 else: rbtnAgeUnit_point = getListViewPoint("id/rg_age", 2) #获取年龄单位天单选框相对坐标对象 rbtnAgeUnit_point = getListViewAbsolutePoint(rbtnAgeUnit_point, currentContent.width, currentContent.height, taskbarHeight) device.touch(rbtnAgeUnit_point.x - 20, rbtnAgeUnit_point.y - 18, MD.DOWN_AND_UP) #点击保存按钮 btnSave_point = getControlPoint("id/title_btnRight") txtAge_point = getListViewAbsolutePoint(btnSave_point, currentContent.width, currentContent.height, taskbarHeight) device.touch(btnSave_point.x - 20, btnSave_point.y - 18, MD.DOWN_AND_UP) return None###########删除病历列表第一条数据def deletePatient(): listItem1 = getListViewPoint("id/list", 0) device.drag((listItem1.x, listItem1.y), (listItem1.x - 600, listItem1.y), 1, 2) #从病历列表第一条的中心点左滑动600像素 btnItemDelete = getListViewPoint("id/list", 0, 1, 2) device.touch(btnItemDelete.x, btnItemDelete.y, MD.DOWN_AND_UP) MR.sleep(0.5) btnYes = getControlPoint("id/button1") currentContent = hierarchyViewer.findViewById("id/content") #获取删除病历提示窗口content对象 btnYes = getListViewAbsolutePoint(btnYes, currentContent.width, currentContent.height, taskbarHeight) device.touch(btnYes.x, btnYes.y, MD.DOWN_AND_UP) #点击是按钮device = MR.waitForConnection()if not device: print >> sys.stderr, "connect device fail!" sys.exit(1)easyMonkey = EasyMonkeyDevice(device)if not easyMonkey: print >> sys.stderr, "connect easyMonkey device fail!" sys.exit(1)hierarchyViewer = device.getHierarchyViewer()print "device is connected"screenContent = hierarchyViewer.findViewById('id/xy_search') # 获得整个屏幕显示区域的节点信息screenContent_loca = device.getHierarchyViewer().getAbsolutePositionOfView(screenContent) # 获取整个屏幕显示区域的左上角坐标taskbarHeight = screenContent_loca.y # 获取任务栏的高度print "takebar's heigt is: ", taskbarHeightlogin()print "Login completed"MR.sleep(2)#参数说明:0:姓名 1:性别(男、女) 2:年龄 3:年龄单位(岁、月、日)listPatientInfo = ["test", "男", "11", "月"]newPatient(*listPatientInfo)print "NewPatient completed"MR.sleep(1)deletePatient()print "delete first item in list completed"
阅读全文
0 0
- monkeyrunner脚本实践
- monkeyrunner 录制脚本
- MonkeyRunner脚本编写
- Monkeyrunner 录制脚本&回放
- monkeyrunner写阴阳师脚本
- monkeyrunner脚本编写
- Monkeyrunner 脚本使用
- Android MonkeyRunner脚本编写技巧
- 使用java编写monkeyrunner脚本
- 增强型MonkeyRunner 脚本计划
- Python脚本运行MonkeyRunner命令
- 【MonkeyRunner】eclipse中编写monkeyrunner脚本环境搭建
- monkeyrunner自动化测试工具--脚本模板及MonkeyRunner常用事件
- 用eclipse调试monkeyrunner的脚本
- MonkeyRunner_用eclipse调试monkeyrunner的脚本
- monkeyRunner的录制和播放脚本
- 根据控件id实现的monkeyrunner脚本
- 用eclipse调试monkeyrunner的脚本
- 排序算法(五)——快速排序
- Uva 11093 Just Finish it up——思路题
- iOS XML解析笔记
- presentViewController及属性传值
- oracle 修改表字段
- monkeyrunner脚本实践
- hibernate笔记-005-一对一映射
- 排序算法(六)——希尔排序
- java关于equals与==号的区别以及与hashCode的关系
- dump tc_action
- A+B problem (0+EOL)
- 排序算法(七)——堆排序
- nodejs 多核处理模块cluster
- 青春是黄鹤·《致我们终将逝去的青春》