''' Copyright (C) 2012 whoistester.com Created on July 2 ,2012 @auther: admin#whoistester.com ''' import sys import os DEBUG=False repeatTimesOnError=15 ANDROID_HOME=os.environ['ANDROID_HOME'] if os.environ.has_key('ANDROID_HOME') else 'E:\\android-sdks\\android-sdks\\' from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice from com.android.monkeyrunner.easy import EasyMonkeyDevice from com.android.monkeyrunner.easy import By from com.android.chimpchat.hierarchyviewer import HierarchyViewer from com.android.hierarchyviewerlib.device import ViewNode from com.android.chimpchat.core import TouchPressType class wrapEasyMonkey: ''' Wrap easy monkey class''' Copyright (C) 2012 whoistester.com Created on july 2 ,2012 @auther: admin#whoistester.com (#->@) ''' import sys import os DEBUG=False repeatTimesOnError=15 ANDROID_HOME=os.environ['ANDROID_HOME'] if os.environ.has_key('ANDROID_HOME') else 'E:\\android-sdks\\android-sdks\\' from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice from com.android.monkeyrunner.easy import EasyMonkeyDevice from com.android.monkeyrunner.easy import By from com.android.chimpchat.hierarchyviewer import HierarchyViewer from com.android.hierarchyviewerlib.device import ViewNode from com.android.chimpchat.core import TouchPressType class wrapEasyMonkey: ''' Wrap easy monkey class ''' def __init__(self,easyDevice,device): if DEBUG: print ("__int__: created the wrap easy monkey object") self.easyDevice = easyDevice self.device = device self.DOWN = TouchPressType.DOWN.getIdentifier() self.UP = TouchPressType.UP.getIdentifier() self.DOWN_AND_UP = TouchPressType.DOWN_AND_UP.getIdentifier() ''' wrap easyMonkeyDevice by function will return the view object if found. not found will return None. ''' def getView(self,id): if DEBUG: print 'getview object functions' for tmp in range(repeatTimesOnError): try: return By.id(id) except: if DEBUG: print ' %d time getView error , not found the view , will retry ' % tmp MonkeyRunner.sleep(1) continue print 'sorry , still can\'t get the view. please check the view is exist or not?' return None ''' wrap get text function. return text string content of the view object. If can not found the view object , will return None. ''' def getText(self,view): if DEBUG: print 'getview text functions' for tmp in range(repeatTimesOnError): try: return self.easyDevice.getText(view).encode('utf-8') except: if DEBUG: print ' %d time getText error , will retry ' % tmp MonkeyRunner.sleep(1) continue print 'sorry , still can\'t get the text. please check the view is exist or not , or does the view have text property?' return None ''' wrap easyMonkeyDevice touch view function return true or false (if cannot locate the view ,will return false) ''' def touchView(self,view,type): if DEBUG: print 'wrap touch view function' for tmp in range(repeatTimesOnError): try: self.easyDevice.touch(view,type) return True except: if DEBUG: print ' %d time touch error , not found the view , will retry ' % tmp if (tmp >1 & DEBUG): print 'Please wait to touch the view' MonkeyRunner.sleep(1) continue print 'sorry , still can\'t touch view. please check the view is exist or not , or increase the repeat times variable?' return False def touchView(self,view,type): if DEBUG: print 'wrap touch view function' for tmp in range(repeatTimesOnError): try: self.easyDevice.touch(view,type) return True except: if DEBUG: print ' %d time touch error , not found the view , will retry ' % tmp if (tmp >1 & DEBUG): print 'Please wait to touch the view' MonkeyRunner.sleep(1) continue print 'sorry , still can\'t touch view. please check the view is exist or not , or increase the repeat times variable?' return False ''' wrap touch point function , touch screen position return true or false always return true actually ''' def touchPoint(self,x,y,type): if DEBUG: print 'wrap touch point function' for tmp in range(repeatTimesOnError): try: self.device.touch(x,y,type) return True except: if DEBUG: print ' %d time touch point error , , will retry ' % tmp MonkeyRunner.sleep(1) continue print 'sorry , still can\'t touch point. please check the view is exist or not , or increase the repeat times variable?' return False ''' has focus ''' def hasFocused(self,id): if DEBUG: print 'check the view is focused or not' #hierarchyViewer = device.getHierarchyViewer() #print hierarchyViewer.findViewById(id).hasFocus for tmp in range(repeatTimesOnError): try: hierarchyViewer = self.device.getHierarchyViewer() return hierarchyViewer.findViewById(id).hasFocus except: if DEBUG: print ' %d time check focus error , , will retry ' % tmp MonkeyRunner.sleep(1) continue return False def getPosition(self,id): if DEBUG: print 'check the view is focused or not' for tmp in range(repeatTimesOnError): try: hierarchyViewer = self.device.getHierarchyViewer() print hierarchyViewer.findViewById(id).left print hierarchyViewer.findViewById(id).top print hierarchyViewer.findViewById(id).width print hierarchyViewer.findViewById(id).height return hierarchyViewer.findViewById(id).left except: MonkeyRunner.sleep(1) continue return None def touchDialog(self,parentIdPosition,id,type): if DEBUG: print 'touch the dialog button , here need the parent id' hierarchyViewer = self.device.getHierarchyViewer() #print hierarchyViewer.findViewById(parentId).left #print hierarchyViewer.findViewById(parentId).top x = hierarchyViewer.findViewById(parentId).left + (hierarchyViewer.findViewById(parentId).width - hierarchyViewer.findViewById(id).width)/2 y = hierarchyViewer.findViewById(parentId).top + (hierarchyViewer.findViewById(parentId).height - hierarchyViewer.findViewById(id).height)/2 print x print y self.touchPoint(x,y,type) def touchDialogButton(self,type): if DEBUG: print 'touch the dialog button , thru controling the direction key' if type==1: MonkeyRunner.sleep(1) self.device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(1) self.device.press('KEYCODE_ENTER',MonkeyDevice.DOWN_AND_UP) if type==2: self.device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(1) self.device.press('KEYCODE_DPAD_RIGHT',MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(1) self.device.press('KEYCODE_ENTER',MonkeyDevice.DOWN_AND_UP) if type==0: MonkeyRunner.sleep(1) self.device.press('KEYCODE_ENTER',MonkeyDevice.DOWN_AND_UP) def type(self,content): if DEBUG: print 'device type the %s' % content self.device.type(content) def press(self,keycode,type): if DEBUG: print 'device press the %s ' % keycode self.device.press(keycode,type)'''def __init__(self,easyDevice,device):if DEBUG:print ("__int__: created the wrap easy monkey object")self.easyDevice = easyDeviceself.device = deviceself.DOWN = TouchPressType.DOWN.getIdentifier()self.UP = TouchPressType.UP.getIdentifier()self.DOWN_AND_UP = TouchPressType.DOWN_AND_UP.getIdentifier()'''wrap easyMonkeyDevice by functionwill return the view object if found. not found will return None.'''def getView(self,id):if DEBUG:print 'getview object functions'for tmp in range(repeatTimesOnError):try:return By.id(id)except:if DEBUG:print ' %d time getView error , not found the view , will retry ' % tmpMonkeyRunner.sleep(1)continueprint 'sorry , still can\'t get the view. please check the view is exist or not?'return None '''wrap get text function.return text string content of the view object. If can not found the view object , will return None.'''def getText(self,view):if DEBUG:print 'getview text functions'for tmp in range(repeatTimesOnError):try:return self.easyDevice.getText(view).encode('utf-8')except:if DEBUG:print ' %d time getText error , will retry ' % tmpMonkeyRunner.sleep(1)continueprint 'sorry , still can\'t get the text. please check the view is exist or not , or does the view have text property?'return None '''wrap easyMonkeyDevice touch view functionreturn true or false (if cannot locate the view ,will return false)'''def touchView(self,view,type):if DEBUG:print 'wrap touch view function'for tmp in range(repeatTimesOnError):try:self.easyDevice.touch(view,type)return Trueexcept:if DEBUG:print ' %d time touch error , not found the view , will retry ' % tmpif (tmp >1 & DEBUG):print 'Please wait to touch the view'MonkeyRunner.sleep(1)continueprint 'sorry , still can\'t touch view. please check the view is exist or not , or increase the repeat times variable?'return False def touchView(self,view,type):if DEBUG:print 'wrap touch view function'for tmp in range(repeatTimesOnError):try:self.easyDevice.touch(view,type)return Trueexcept:if DEBUG:print ' %d time touch error , not found the view , will retry ' % tmpif (tmp >1 & DEBUG):print 'Please wait to touch the view'MonkeyRunner.sleep(1)continueprint 'sorry , still can\'t touch view. please check the view is exist or not , or increase the repeat times variable?'return False '''wrap touch point function , touch screen positionreturn true or falsealways return true actually'''def touchPoint(self,x,y,type):if DEBUG:print 'wrap touch point function'for tmp in range(repeatTimesOnError):try:self.device.touch(x,y,type)return Trueexcept:if DEBUG:print ' %d time touch point error , , will retry ' % tmpMonkeyRunner.sleep(1)continueprint 'sorry , still can\'t touch point. please check the view is exist or not , or increase the repeat times variable?'return False '''has focus''' def hasFocused(self,id):if DEBUG:print 'check the view is focused or not'#hierarchyViewer = device.getHierarchyViewer() #print hierarchyViewer.findViewById(id).hasFocusfor tmp in range(repeatTimesOnError):try:hierarchyViewer = self.device.getHierarchyViewer()return hierarchyViewer.findViewById(id).hasFocusexcept:if DEBUG:print ' %d time check focus error , , will retry ' % tmpMonkeyRunner.sleep(1)continuereturn False def getPosition(self,id):if DEBUG:print 'check the view is focused or not'for tmp in range(repeatTimesOnError):try:hierarchyViewer = self.device.getHierarchyViewer()print hierarchyViewer.findViewById(id).leftprint hierarchyViewer.findViewById(id).topprint hierarchyViewer.findViewById(id).widthprint hierarchyViewer.findViewById(id).heightreturn hierarchyViewer.findViewById(id).leftexcept:MonkeyRunner.sleep(1)continuereturn None def touchDialog(self,parentIdPosition,id,type):if DEBUG:print 'touch the dialog button , here need the parent id'hierarchyViewer = self.device.getHierarchyViewer()#print hierarchyViewer.findViewById(parentId).left #print hierarchyViewer.findViewById(parentId).top x = hierarchyViewer.findViewById(parentId).left + (hierarchyViewer.findViewById(parentId).width - hierarchyViewer.findViewById(id).width)/2y = hierarchyViewer.findViewById(parentId).top + (hierarchyViewer.findViewById(parentId).height - hierarchyViewer.findViewById(id).height)/2print xprint yself.touchPoint(x,y,type) def touchDialogButton(self,type):if DEBUG:print 'touch the dialog button , thru controling the direction key'if type==1:MonkeyRunner.sleep(1)self.device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP)MonkeyRunner.sleep(1)self.device.press('KEYCODE_ENTER',MonkeyDevice.DOWN_AND_UP)if type==2:self.device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP)MonkeyRunner.sleep(1)self.device.press('KEYCODE_DPAD_RIGHT',MonkeyDevice.DOWN_AND_UP)MonkeyRunner.sleep(1)self.device.press('KEYCODE_ENTER',MonkeyDevice.DOWN_AND_UP)if type==0:MonkeyRunner.sleep(1)self.device.press('KEYCODE_ENTER',MonkeyDevice.DOWN_AND_UP) def type(self,content):if DEBUG:print 'device type the %s' % contentself.device.type(content) def press(self,keycode,type): if DEBUG: print 'device press the %s ' % keycodeself.device.press(keycode,type)
build#20100702 源码
''' Copyright (C) 2012 whoistester.com Created on july 2 ,2012 @auther: admin#whoistester.com (#->@) ''' import sys import os DEBUG=False repeatTimesOnError=15 ANDROID_HOME=os.environ['ANDROID_HOME'] if os.environ.has_key('ANDROID_HOME') else 'E:\\android-sdks\\android-sdks\\' from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice from com.android.monkeyrunner.easy import EasyMonkeyDevice from com.android.monkeyrunner.easy import By from com.android.chimpchat.hierarchyviewer import HierarchyViewer from com.android.hierarchyviewerlib.device import ViewNode from com.android.chimpchat.core import TouchPressType class wrapEasyMonkey: ''' Wrap easy monkey class ''' def __init__(self,easyDevice,device): if DEBUG: print ("__int__: created the wrap easy monkey object") self.easyDevice = easyDevice self.device = device self.DOWN = TouchPressType.DOWN.getIdentifier() self.UP = TouchPressType.UP.getIdentifier() self.DOWN_AND_UP = TouchPressType.DOWN_AND_UP.getIdentifier() ''' wrap easyMonkeyDevice by function will return the view object if found. not found will return None. ''' def getView(self,id): if DEBUG: print 'getview object functions' for tmp in range(repeatTimesOnError): try: return By.id(id) except: if DEBUG: print ' %d time getView error , not found the view , will retry ' % tmp MonkeyRunner.sleep(1) continue print 'sorry , still can\'t get the view. please check the view is exist or not?' return None ''' wrap get text function. return text string content of the view object. If can not found the view object , will return None. ''' def getText(self,view): if DEBUG: print 'getview text functions' for tmp in range(repeatTimesOnError): try: return self.easyDevice.getText(view).encode('utf-8') except: if DEBUG: print ' %d time getText error , will retry ' % tmp MonkeyRunner.sleep(1) continue print 'sorry , still can\'t get the text. please check the view is exist or not , or does the view have text property?' return None ''' wrap easyMonkeyDevice touch view function return true or false (if cannot locate the view ,will return false) ''' def touchView(self,view,type): if DEBUG: print 'wrap touch view function' for tmp in range(repeatTimesOnError): try: self.easyDevice.touch(view,type) return True except: if DEBUG: print ' %d time touch error , not found the view , will retry ' % tmp if (tmp >1 & DEBUG): print 'Please wait to touch the view' MonkeyRunner.sleep(1) continue print 'sorry , still can\'t touch view. please check the view is exist or not , or increase the repeat times variable?' return False def touchView(self,view,type): if DEBUG: print 'wrap touch view function' for tmp in range(repeatTimesOnError): try: self.easyDevice.touch(view,type) return True except: if DEBUG: print ' %d time touch error , not found the view , will retry ' % tmp if (tmp >1 & DEBUG): print 'Please wait to touch the view' MonkeyRunner.sleep(1) continue print 'sorry , still can\'t touch view. please check the view is exist or not , or increase the repeat times variable?' return False ''' wrap touch point function , touch screen position return true or false always return true actually ''' def touchPoint(self,x,y,type): if DEBUG: print 'wrap touch point function' for tmp in range(repeatTimesOnError): try: self.device.touch(x,y,type) return True except: if DEBUG: print ' %d time touch point error , , will retry ' % tmp MonkeyRunner.sleep(1) continue print 'sorry , still can\'t touch point. please check the view is exist or not , or increase the repeat times variable?' return False ''' has focus ''' def hasFocused(self,id): if DEBUG: print 'check the view is focused or not' #hierarchyViewer = device.getHierarchyViewer() #print hierarchyViewer.findViewById(id).hasFocus for tmp in range(repeatTimesOnError): try: hierarchyViewer = self.device.getHierarchyViewer() return hierarchyViewer.findViewById(id).hasFocus except: if DEBUG: print ' %d time check focus error , , will retry ' % tmp MonkeyRunner.sleep(1) continue return False def getPosition(self,id): if DEBUG: print 'check the view is focused or not' for tmp in range(repeatTimesOnError): try: hierarchyViewer = self.device.getHierarchyViewer() print hierarchyViewer.findViewById(id).left print hierarchyViewer.findViewById(id).top print hierarchyViewer.findViewById(id).width print hierarchyViewer.findViewById(id).height return hierarchyViewer.findViewById(id).left except: MonkeyRunner.sleep(1) continue return None def touchDialog(self,parentIdPosition,id,type): if DEBUG: print 'touch the dialog button , here need the parent id' hierarchyViewer = self.device.getHierarchyViewer() #print hierarchyViewer.findViewById(parentId).left #print hierarchyViewer.findViewById(parentId).top x = hierarchyViewer.findViewById(parentId).left + (hierarchyViewer.findViewById(parentId).width - hierarchyViewer.findViewById(id).width)/2 y = hierarchyViewer.findViewById(parentId).top + (hierarchyViewer.findViewById(parentId).height - hierarchyViewer.findViewById(id).height)/2 print x print y self.touchPoint(x,y,type) def touchDialogButton(self,type): if DEBUG: print 'touch the dialog button , thru controling the direction key' if type==1: MonkeyRunner.sleep(1) self.device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(1) self.device.press('KEYCODE_ENTER',MonkeyDevice.DOWN_AND_UP) if type==2: self.device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(1) self.device.press('KEYCODE_DPAD_RIGHT',MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(1) self.device.press('KEYCODE_ENTER',MonkeyDevice.DOWN_AND_UP) if type==0: MonkeyRunner.sleep(1) self.device.press('KEYCODE_ENTER',MonkeyDevice.DOWN_AND_UP) def type(self,content): if DEBUG: print 'device type the %s' % content self.device.type(content) def press(self,keycode,type): if DEBUG: print 'device press the %s ' % keycode self.device.press(keycode,type)