1# -*- coding: utf-8 -*- 2import os 3import re 4import sys 5 6from devicetest.api import Asserts 7from devicetest.aw.OpenHarmony import DeviceInfoHelper 8from devicetest.log.logger import print_info 9 10from test_case import ITestCase 11from xdevice import DeviceState 12 13 14class Launcher(ITestCase): 15 16 def __init__(self, controllers): 17 super().__init__(controllers) 18 19 def setup(self): 20 pass 21 22 def process(self): 23 for retry in range(3): 24 try: 25 self.step('步骤1.{}:点亮屏幕'.format(retry)) 26 self.common_oh.shell(self.Phone1, 'mkdir -p /data/local/tmp/screen_test/train_set') 27 self.common_oh.shell(self.Phone1, 'power-shell wakeup;power-shell setmode 602') 28 self.step('步骤2.{}:滑动解锁'.format(retry)) 29 for i in range(2): 30 self.common_oh.shell(self.Phone1, 'uinput -T -m 425 400 425 1000;uinput -T -m 425 1000 425 400') 31 32 # 屏幕常亮 33 self.step('步骤3.{}:设置屏幕常亮'.format(retry)) 34 DeviceInfoHelper.setSleep(self.Phone1, time_sleep=600) 35 self.common_oh.click(self.Phone1, x=360, y=720) 36 self.common_oh.wait(self.Phone1, 3) 37 # 控件检查 38 self.step('步骤4.{}:检查是否在桌面'.format(retry)) 39 self.common_oh.checkIfTextExist(self.Phone1, '相机') 40 self.common_oh.checkIfTextExist(self.Phone1, '音乐') 41 # 截图对比 42 self.step('步骤5.{}:截图对比'.format(retry)) 43 launcher_pic = 'launcher.jpeg' 44 self.take_picture_to_local(launcher_pic) 45 similarity = self.compare_image_similarity(launcher_pic) 46 print_info('相似度为:{}%'.format(similarity)) 47 self.asserts.assert_greater_equal(similarity, self.STANDARD_SIMILARITY) 48 break 49 except: 50 if retry < 2: 51 self.step('步骤6.{}:启动失败,重启设备,重试'.format(retry)) 52 self.common_oh.safeReboot(self.Phone1) 53 else: 54 self.step('步骤7.{}:重试了3次,启动失败,收集crash'.format(retry)) 55 self.common_oh.shell(self.Phone1, 'cd /data/log/faultlog/temp && tar -cf after_test_cppcrash{}.tar cppcrash*'.format(self.device_name)) 56 self.common_oh.pullFile(self.Phone1, '/data/log/faultlog/temp/after_test_cppcrash{}.tar'.format(self.device_name), os.path.normpath(self.local_save_path)) 57 # fault logger 58 self.common_oh.shell(self.Phone1, 'cd /data/log/faultlog/faultlogger && tar -cf after_test_jscrash{}.tar jscrash*'.format(self.device_name)) 59 self.common_oh.pullFile(self.Phone1, '/data/log/faultlog/faultlogger/after_test_jscrash{}.tar'.format(self.device_name), os.path.normpath(self.local_save_path)) 60 raise 61 62 def teardown(self): 63 self.step('收尾动作1:cat /proc/`pidof foundation`/smaps_rollup') 64 self.common_oh.shell(self.Phone1, 'cat /proc/`pidof foundation`/smaps_rollup') 65