def test_Fps(self): logger.info('Enter -- MUAT:BrowserTest:test_Fps') BrowserIcon = self.d(text=u"浏览器", resourceId='com.aliyun.lightdesk:id/tag_name',className="android.widget.TextView") if not BrowserIcon.exists: name = sys._getframe().f_code.co_name screen_shot.ScreenShot(self,name) self.assertTrue(BrowserIcon.exists) click_x = BrowserIcon.info['visibleBounds']['left'] +5 click_y = BrowserIcon.info['visibleBounds']['top'] +5 self.mouse.doubleclick(click_x, click_y, constants.MouseLeftKey) start=time.time() while time.time()-start<constants.Time_Out: if self.d(className="android.widget.FrameLayout", packageName="org.chromium.chrome").exists: break else: time.sleep(1) BrowserWindow = self.d(className="android.widget.FrameLayout", packageName="org.chromium.chrome") if not BrowserWindow.exists: name = sys._getframe().f_code.co_name screen_shot.ScreenShot(self,name) self.assertTrue(BrowserWindow.exists) if BrowserWindow.exists: maxButton = self.d(resourceId="android:id/pc_max", className="android.widget.ImageView", packageName="org.chromium.chrome") logger.debug('click max button: (%s)' % (maxButton.info['packageName'])) maxButton.click() blankpage = self.d(resourceId="org.chromium.chrome:id/ntp_scrollview") if blankpage.exists: self.assertEqual(blankpage.info['contentDescription'], u"打开新的标签页") address = self.d(resourceId="org.chromium.chrome:id/url_bar") if address.exists: self.assertEqual(address.info['text'], u"搜索或输入网址") MenuButton=self.d(resourceId='org.chromium.chrome:id/menu_button',packageName='org.chromium.chrome') if MenuButton.exists: MenuButton.click() time.sleep(1) self.d(resourceId='org.chromium.chrome:id/menu_item_text',packageName='org.chromium.chrome').click() BookMark=self.d(resourceId='org.chromium.chrome:id/highlight') if BookMark.exists: BookMark.click() time.sleep(1) StopButton=self.d(description=u'停止加载网页',resourceId='org.chromium.chrome:id/refresh_button') start=time.time() while time.time()-start<constants.TIME_OUT: if not StopButton.exists: break else: time.sleep(0.5) detect_re = re.compile(r'D.UIAutomatorStub.*swipe') wanted_re = re.compile(r'MPT: sf post one frame at (.*)$') adb_log = AdbLog(mode=AdbLog.MODE_RE | AdbLog.MODE_NEED_DETECT | AdbLog.MODE_NEED_CONTINUE, wanted_re=wanted_re, detect_re=detect_re, logger=logger) adb_log.clear() adb_log.start() self.d.swipe(200,900,200,500) self.mouse.wheel(860,500,constants.MouseWheelDown,70,5) self.mouse.wheel(860,500,constants.MouseWheelUp,60,5) # check the log and get the data while True: if adb_log.result and len(adb_log.result) >= 3: break else: time.sleep(1) adb_log.stop_log() adb_log.join() # store the result start_time = 0 end_time = 0 fps = 0 try: length = len(adb_log.result) if length >=3: start_time = int(adb_log.result[1][0]) end_time = int(adb_log.result[-1][0]) fps = (length - 1) * 1000 / (end_time - start_time) else: logger.error('not enough data for calc fps: (%s)' % (adb_log.result)) except: logger.error('retrieve time from (%s) error' % (adb_log.result)) logger.info('wheel taobao page fps: %s' % ( fps)) # baiduPage = self.d(className="android.webkit.WebView", packageName="org.chromium.chrome") # if baiduPage.exists: # self.assertEqual(baiduPage.info['contentDescription'], u'百度一下,你就知道') closeButton = self.d(resourceId="android:id/pc_close", className="android.widget.ImageView", packageName="org.chromium.chrome") if closeButton.exists: logger.debug('click close button: (%s)' % (closeButton.info['packageName'])) closeButton.click() logger.info('Exit -- MUAT:BrowserTest:test_Fps')
def test_mpc_settings(self): logger.info('Enter -- MPT:SettingsTest:test_mpc_settings') value = {} report = MuatReport() serial_number = None if self.param and self.param.parameters and self.param.parameters.serial_number: serial_number = self.param.parameters.serial_number apk_manager = ApkManager() apk = constants.MPT_SETTING_APK apk_info = apk_manager.get_apk_info(apk) if apk in apk_manager.local_apks_info: while True: for i in range(constants.MPT_SETTING_COUNT): # check monitor running status if self.mon and not self.mon.running_status: break # start apk apk_manager.start_apk(apk, serial_number=serial_number) time.sleep(1) for resource_id in constants.MPT_SETTING_APK_RESOURCEIDS: # check monitor running status if self.mon and not self.mon.running_status: break # start adb log capture thread detect_re = re.compile(r'MPT click UiSelector.PACKAGE NAME=%s, RESOURCE_ID=(%s:id/%s). at (.*)$' % (apk_info.package_name, apk_info.package_name, resource_id)) wanted_re = re.compile(r'MPT: sf post one frame at (.*)$') adb_log = AdbLog(mode=AdbLog.MODE_RE | AdbLog.MODE_NEED_DETECT, wanted_re=wanted_re, detect_re=detect_re, logger=logger, serial_number=serial_number) adb_log.clear() adb_log.start() # click setting items button = self.d(packageName=apk_info.package_name, resourceId='%s:id/%s' % (apk_info.package_name, resource_id)) if button.exists: logger.debug('click item (%s)' % (resource_id)) button.click() time.sleep(2) else: logger.warning('not found item(%s)' % (resource_id)) # check the log and get the data while True: if len(adb_log.result) == 2: break else: time.sleep(1) # store the result click_item = '' start_time = 0 end_time = 0 cost_time = 0 try: click_item = adb_log.result[0][0] start_time = int(adb_log.result[0][1]) end_time = int(adb_log.result[1][0]) if click_item == '%s:id/%s' % (apk_info.package_name, resource_id): cost_time = end_time - start_time else: logger.error('detect_re detect the wrong item: (%s)' % (adb_log.result[0])) except: logger.error('retrieve time from (%s) error' % (adb_log.result)) logger.info('setting item(%s) cost: %s' % (resource_id, cost_time)) if resource_id in value: value[resource_id].append(cost_time) else: value[resource_id] = [cost_time] # report message report.add_message(data_name='muat_setting', MON_Time=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()), item=resource_id, unit='ms', value=cost_time, item_name=constants.MPT_SETTING_APK_RESOURCEIDS_CN[resource_id].decode('gb2312')) adb_log.join() # close apk apk_manager.close_apk(apk) if self.mon and not self.mon.running_status: break if self.param and self.param.parameters and self.param.parameters.special_keys and 'run_one_cycle' in self.param.parameters.special_keys: break if value: logger.debug('setting test : %s' % (value)) #result_items = [] summary = {} for resource_id in value: summary[resource_id] = sum(value[resource_id]) / len(value[resource_id]) #result_items.append(summary[resource_id]) #summary[constants.MPT_SETTING_RESULT_TOTAL] = sum(result_items) / len(result_items) logger.debug('setting test - summary: %s' % (summary)) result = GenerateResult(case=os.path.basename(os.path.abspath(__file__)), unit='ms', standard=0, summary=summary, value=value) if result.result: report.add_result(result.result) else: logger.error('setting test failed')