class Clock_CaseMethod: def __init__(self, dev, failkey): self.driver = dev self.test = Action(self.driver) self.Case = TestCase() self.failkey = failkey def case_if_base(self, Skip=False): """设置基础,检查是否可以正常启动""" self.driver.activate_app(clock_pkg) if not Skip: if self.test.wait_if_activity(Permissions_Activity): self.test.find_byid(Permission_allow_button).click() time.sleep(1) self.Case.assertTrue(self.test.wait_if_activity(clock_activity), '启动 时钟 失败,超时5秒未检测到主界面') self.test.set_PORTRAIT() time.sleep(1) def case_check_date_time(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base(True) time.sleep(1) self.test.find_byacc('时钟').click() time.sleep(0.5) time_test = TimeUtils.str_A_P_M_time() tmp_time = self.test.find_byid(clock_show_time).text tmp_date = self.test.find_byid(clock_show_data).text if tmp_time not in time_test: self.Case.fail( f'失败,请检查是否与北京时间相差过大,若差1分钟则不是问题,手机时间 : {tmp_time},当前时间 : {time_test}' ) if tmp_date not in TimeUtils.str_date_week(): self.Case.fail( f'失败,请检查是否与北京时间相差过大,手机日期 : {tmp_date},当前日期 : {TimeUtils.str_date_week()}' ) def case_set_alarm(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base(True) time.sleep(1) self.test.find_byacc('闹钟').click() time.sleep(0.5) self.test.find_byacc('展开闹钟').click() time.sleep(1) self.test.find_byid(clock_del_alarm).click() time.sleep(0.2) self.test.find_byacc('展开闹钟').click() time.sleep(0.2) for text_acc in ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']: tmp = self.test.find_byacc(text_acc) if tmp.get_attribute('checked') == 'false': tmp.click() time.sleep(0.2) time.sleep(0.2) self.test.find_byid_list(clock_show_time)[0].click() time.sleep(0.5) if self.test.find_byid(clock_set_time_simulation) is None: self.Case.fail(f'设定闹钟的 模拟时钟 刻度盘未显示') if TimeUtils.is_AM(): self.test.find_byid(clock_set_time_am).click() else: self.test.find_byid(clock_set_time_pm).click() self.test.find_byid(clock_set_time_mode).click() time.sleep(0.2) self.test.find_byid(clock_set_time_hour).send_keys( TimeUtils.get_hour()) self.test.find_byid(clock_set_time_minute).send_keys( TimeUtils.get_minute() + 2) self.test.find_byclass(Button, '确定').click() isFlga = False actions = TouchAction(self.driver) for x in range(122): actions.press(x=(self.test.get_windows_width() * 0.5), y=(self.test.get_windows_height() * 0.15)).release().perform() tmp = self.test.find_byid(clock_set_alarm_state) if tmp is not None: locat = tmp.location actions.long_press(x=locat['x'], y=locat['y']) actions.move_to(x=(self.test.get_windows_width() * 0.9), y=locat['y']) actions.release().perform() isFlga = True break time.sleep(1) self.driver.press_keycode(4, 0, 0) if not isFlga: self.Case.fail(f'闹钟在2分钟内未响,测试失败') self.Case.assertTrue(self.test.wait_if_activity(clock_activity), '闹钟 关闭 失败,超时5秒未检测到主界面') time.sleep(1) def case_check_timer_input(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base(True) time.sleep(1) self.test.find_byacc('定时器').click() time.sleep(0.5) for x in range(10): self.test.find_byid(f'{clock_timer_x}{x}').click() time.sleep(0.1) tmp_time = self.test.find_byid(clock_show_timer).text if f'0{x}秒' not in tmp_time: self.Case.fail(f'定时器设定 {x} 秒失败') self.test.find_byid(clock_del_timer_time).click() time.sleep(0.2) def case_set_timer(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base(True) time.sleep(1) self.test.find_byacc('定时器').click() time.sleep(0.5) self.test.find_byid(clock_timer_6).click() tmp_time = self.test.find_byid(clock_show_timer).text if f'06秒' not in tmp_time: self.Case.fail(f'定时器设定 6 秒失败') self.test.find_byid(clock_start_timer).click() time.sleep(1) self.test.find_byid(clock_start_timer).click() time.sleep(1) text_time = self.test.find_byid(clock_show_timer_started).text try: if 6 > int(text_time) > 4: self.Case.fail(f'定时器计时失败,6秒计时器,剩余{text_time}') except ValueError: self.Case.fail(f'定时器显示失败,显示为:{text_time}') time.sleep(0.5) self.test.find_byid(clock_del_timer).click() time.sleep(0.5) self.Case.assertIsNone(self.test.find_byid(clock_start_timer), '定时器未删除') time.sleep(1) def case_check_Stopwatch(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base(True) time.sleep(1) self.test.find_byacc('秒表').click() time.sleep(0.5) self.Case.assertIsNotNone(self.test.find_byid(clock_show_stopwatch), '秒表 计数盘 未显示') tmp = self.test.find_byid(clock_show_stopwatch_time) self.test.find_byid(clock_start_timer).click() time.sleep(3) self.test.find_byid(clock_start_timer).click() try: tmp_time = 0 """ for x in range(10): tmp = self.test.find_byid(clock_show_stopwatch_time) if tmp is not None: tmp_time = int(tmp.text) """ tmp_time = int(tmp.text) if tmp_time == 0: self.Case.fail(f'未获取到,秒表时间') except ValueError: self.Case.fail(f'秒表时间显示错误,计时约三秒,{tmp_time}') if tmp_time < 2.9: self.Case.fail(f'秒表时间显示错误,计时约三秒,未超过2.9秒:时间为:{tmp_time}') self.test.find_byacc('重置').click() time.sleep(1) def case_check_clock_UI_switch(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base(True) mode_list = self.test.find_list_byclass(TextView) for m in mode_list: str_tmp = m.text if '时钟' in str_tmp: m.click() time.sleep(1) break detail_clock = self.test.find_byid(clock_show_time) if detail_clock is None: self.Case.fail("未找到当前详细时间,进入的页面非时钟页面") cities = self.test.find_list_byclass(ImageButton) city_flag = False for city in cities: str_tmp = city.get_attribute('content-desc') if '城市' in str_tmp: city_flag = True break if not city_flag: self.Case.fail("未找到时区(城市)选择按钮,进入的页面非时钟页面") self.test.swipe_Right(600, 1) time.sleep(1) switch_list = self.test.find_list_byclass(Switch) if switch_list is None: alarm_list = self.test.find_list_byclass(TextView) alarm_flag = False for alarm in alarm_list: str_tmp = alarm.text if '没有闹钟' in str_tmp: alarm_flag = True break if not alarm_flag: self.Case.fail("未找到闹钟和没有闹钟提示,进入的页面非闹钟页面") add_list = self.test.find_list_byclass(ImageButton) add_flag = False for add in add_list: str_tmp = add.get_attribute('content-desc') if '添加闹钟' in str_tmp: add_flag = True break if not add_flag: self.Case.fail("未找到添加闹钟的按钮,切换的页面非闹钟页面") self.test.swipe_Left(600, 1) time.sleep(1) self.test.swipe_Left(600, 1) time.sleep(1) timer_text = self.test.find_byid(clock_show_timer) if timer_text is None: self.Case.fail("未找到定时器时刻表,切换的页面非定时器页面") del_list = self.test.find_list_byclass(ImageButton) del_flag = False for d in del_list: str_tmp = d.get_attribute('content-desc') if '删除' in str_tmp: del_flag = True break if not del_flag: self.Case.fail("未找到定时器删除按钮,切换的页面非定时器页面") self.test.swipe_Left(600, 1) time.sleep(1) stopwatch_veiw = self.test.find_byid(clock_stopwatch_veiw) if stopwatch_veiw is None: self.Case.fail("未找到秒表面板,切换的为非秒表页面") start_stop_button_list = self.test.find_list_byclass(ImageButton) start_flag = False for s in start_stop_button_list: str_tmp = s.get_attribute('content-desc') if '开始' in str_tmp: start_flag = True break if not start_flag: self.Case.fail("未找到秒表开始计时的按钮,切换的为非秒表页面") def case_clock_set_city_time(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base(True) mode_list = self.test.find_list_byclass(TextView) for m in mode_list: str_tmp = m.text if '时钟' in str_tmp: m.click() time.sleep(1) break city_button = self.test.find_list_byclass(ImageButton) city_flag = False for city in city_button: str_tmp = city.get_attribute('content-desc') if '城市' in str_tmp: city.click() time.sleep(2) city_flag = True break if not city_flag: self.Case.fail("未找到城市按钮,确认当前页面为时钟页面") city_check_list = self.test.find_list_byclass(CheckBox) for city in city_check_list: str_tmp = city.get_attribute('content-desc') if '阿比让' in str_tmp: city.click() time.sleep(1) break back_list = self.test.find_list_byclass(ImageButton) for back in back_list: str_tmp = back.get_attribute('content-desc') if '转到上一层级' in str_tmp: back.click() time.sleep(2) break textview_list = self.test.find_list_byclass(TextView) city_flag = False for t in textview_list: str_tmp = t.text if '阿比让' in str_tmp: city_flag = True break if not city_flag: self.Case.fail("未找到选中的城市") city_button = self.test.find_list_byclass(ImageButton) city_flag = False for city in city_button: str_tmp = city.get_attribute('content-desc') if '城市' in str_tmp: city.click() time.sleep(2) city_flag = True break if not city_flag: self.Case.fail("未找到城市按钮,确认当前页面为时钟页面") city_check_list = self.test.find_list_byclass(CheckBox) for city in city_check_list: str_tmp = city.get_attribute('content-desc') if '阿比让' in str_tmp: city.click() time.sleep(1) break back_list = self.test.find_list_byclass(ImageButton) for back in back_list: str_tmp = back.get_attribute('content-desc') if '转到上一层级' in str_tmp: back.click() time.sleep(2) break def case_back_and_home_out_of_clock(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base(True) mode_list = self.test.find_list_byclass(TextView) for m in mode_list: str_tmp = m.text if '时钟' in str_tmp: m.click() time.sleep(1) break self.driver.press_keycode(KEY_BACK, 0, 0) time.sleep(1) if self.test.wait_if_activity(clock_activity): self.Case.fail("在时钟界面按返回键无法退出界面") else: self.case_if_base(True) self.driver.press_keycode(KEY_HOME, 0, 0) time.sleep(1) if self.test.wait_if_activity(clock_activity): self.Case.fail("在时钟界面按HOME按钮无法退出界面") def case_preview_and_play_timer_sounds(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base(True) mode_list = self.test.find_list_byclass(TextView) for m in mode_list: str_tmp = m.text if '定时器' in str_tmp: m.click() time.sleep(1) break more_list = self.test.find_list_byclass(ImageView) for more in more_list: str_tmp = more.get_attribute('content-desc') if '更多选项' in str_tmp: more.click() time.sleep(1) break set_list = self.test.find_list_byclass(TextView) for s in set_list: str_tmp = s.text if '设置' in str_tmp: s.click() time.sleep(1) break for i in range(3): self.test.swipe_Down(600, 1) time.sleep(0.1) setting_list = self.test.find_list_byclass(TextView) for sets in setting_list: str_tmp = sets.text if '定时器提示音' in str_tmp: sets.click() time.sleep(3) break sounds_list = self.test.find_list_byclass(TextView) sound_flag = False for sound in sounds_list: str_tmp = sound.text if '静音' in str_tmp: sound.click() time.sleep(2) sound_flag = True continue if sound_flag: sound.click() time.sleep(2) for i in range(3): self.test.swipe_Down(600, 1) time.sleep(0.2) sound_list = self.test.find_list_byclass(TextView) for s in sound_list: s.click() time.sleep(2) if not sound_flag: self.Case.fail("未找到任何铃声") def case_set_and_check_timer_sound(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base(True) mode_list = self.test.find_list_byclass(TextView) for m in mode_list: str_tmp = m.text if '定时器' in str_tmp: m.click() time.sleep(1) break more_list = self.test.find_list_byclass(ImageView) for more in more_list: str_tmp = more.get_attribute('content-desc') if '更多选项' in str_tmp: more.click() time.sleep(1) break set_list = self.test.find_list_byclass(TextView) for s in set_list: str_tmp = s.text if '设置' in str_tmp: s.click() time.sleep(1) break for i in range(3): self.test.swipe_Down(600, 1) time.sleep(0.1) setting_list = self.test.find_list_byclass(TextView) for sets in setting_list: str_tmp = sets.text if '定时器提示音' in str_tmp: sets.click() time.sleep(3) break sounds_list = self.test.find_list_byclass(TextView) for sound in sounds_list: str_tmp = sound.text if 'Argon' in str_tmp: sound.click() time.sleep(2) break back_list = self.test.find_list_byclass(ImageButton) for back in back_list: str_tmp = back.get_attribute('content-desc') if '转到上一层级' in str_tmp: back.click() time.sleep(1) break setting_list = self.test.find_list_byclass(TextView) sound_check = False for sets in setting_list: str_tmp = sets.text if 'Argon' in str_tmp: sound_check = True break if not sound_check: self.Case.fail("定时器提示音设置失败") back_list = self.test.find_list_byclass(ImageButton) for back in back_list: str_tmp = back.get_attribute('content-desc') if '转到上一层级' in str_tmp: back.click() time.sleep(1) break self.test.find_byid(clock_timer_6).click() time.sleep(1) image_list = self.test.find_list_byclass(ImageButton) for i in image_list: str_tmp = i.get_attribute('content-desc') if '开始' in str_tmp: i.click() time.sleep(2) break for i in range(5): time.sleep(3) button_list = self.test.find_list_byclass(Button) for b in button_list: str_tmp = b.text if '删除' in str_tmp: b.click() time.sleep(2) break if self.test.find_byid(clock_show_timer) is None: self.Case.fail("删除定时器失败") def case_timer_add_one_minute_check(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base(True) mode_list = self.test.find_list_byclass(TextView) for m in mode_list: str_tmp = m.text if '定时器' in str_tmp: m.click() time.sleep(1) break one_button = self.test.find_byid(clock_timer_1) for i in range(6): one_button.click() time.sleep(1) for i in range(4): self.test.find_byid(clock_del_timer_time).click() time.sleep(1) image_list = self.test.find_list_byclass(ImageButton) for i in image_list: str_tmp = i.get_attribute('content-desc') if '开始' in str_tmp: i.click() time.sleep(2) break add_list = self.test.find_list_byclass(Button) for adds in add_list: str_tmp = adds.text if '+1:00' in str_tmp: adds.click() time.sleep(1) break button_list = self.test.find_list_byclass(Button) for b in button_list: str_tmp = b.text if '删除' in str_tmp: b.click() time.sleep(2) break
class Camera_CaseMethod: def __init__(self, dev, failkey): self.driver = dev self.test = Action(self.driver) self.Case = TestCase() self.failkey = failkey def case_if_base(self): """检查是否可以正常启动""" self.driver.activate_app(cam_Pkg) camHelpOk = self.test.find_byid(cam_help_ok) if camHelpOk is not None: camHelpOk.click() if self.driver.current_activity != cam_Activity: self.Case.assertTrue(self.test.wait_if_activity(cam_Launcher), '启动相机失败,超时5秒未检测到主界面') else: self.Case.assertTrue(self.test.wait_if_activity(cam_Activity), '启动相机失败,超时5秒未检测到主界面') time.sleep(1) def case_take_a_picture(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.driver.activate_app(cam_Pkg) self.Case.assertTrue(self.test.wait_if_activity(cam_Launcher), '启动相机失败,超时5秒未检测到主界面') time.sleep(3) shutterButton = self.test.find_byid(shutter_button) shutterButton.click() time.sleep(3) self.test.find_byid(cam_gallery_button).click() self.Case.assertTrue( self.test.wait_if_activity(gallery_activity, timeout=10), '打开照片预览失败,超时10秒未检测到主界面') time.sleep(1) actions = TouchAction(self.driver) actions.press(x=self.test.get_windows_width() / 2, y=self.test.get_windows_height() / 2).release().perform() def case_back_front_take_a_picture(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() time.sleep(3) tmp_button = self.test.find_byid(cam_flash_button) if tmp_button is not None: shutterButton = self.test.find_byid(shutter_button) shutterButton.click() time.sleep(2) self.test.find_byid(cam_front_back_switcher).click() time.sleep(2) else: self.test.find_byid(cam_front_back_switcher).click() time.sleep(2) shutterButton = self.test.find_byid(shutter_button) shutterButton.click() time.sleep(2) self.test.find_byid(cam_front_back_switcher).click() time.sleep(2) tmp_button = self.test.find_byid(cam_flash_button) if tmp_button is not None: self.Case.assertFalse(self.test.check_element(tmp_button), '预期不符,非前摄界面') shutterButton = self.test.find_byid(shutter_button) shutterButton.click() time.sleep(2) self.test.find_byid(cam_front_back_switcher).click() time.sleep(2) tmp_button = self.test.find_byid(cam_flash_button) self.Case.assertTrue(self.test.check_element(tmp_button), '预期不符,非后摄界面') time.sleep(1) def case_take_a_video(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() time.sleep(3) tmp = self.test.find_list_byid(cam_mode_set, "录像") if tmp is None: self.test.find_list_byid(cam_mode_set, "视频").click() else: tmp.click() time.sleep(1) self.test.find_byid(cam_video_shutter_button).click() time.sleep(3) self.test.find_byid(shutter_button).click() time.sleep(1) self.test.find_byid(cam_video_pause).click() time.sleep(1) self.test.find_byid(cam_video_shutter_button).click() time.sleep(2) self.test.find_byid(cam_video_shutter_button).click() time.sleep(3) self.test.find_byid(cam_video_shutter_button).click() time.sleep(1) def case_back_front_take_a_video(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() time.sleep(3) tmp = self.test.find_list_byid(cam_mode_set, "录像") if tmp is None: self.test.find_list_byid(cam_mode_set, "视频").click() else: tmp.click() time.sleep(1) tmp_button = self.test.find_byid(cam_flash_button) if tmp_button is None: self.test.find_byid(cam_front_back_switcher).click() time.sleep(2) self.test.find_byid(cam_video_shutter_button).click() time.sleep(3) self.test.find_byid(cam_video_shutter_button).click() time.sleep(1) self.test.find_byid(cam_front_back_switcher).click() time.sleep(2) self.test.find_byid(cam_video_shutter_button).click() time.sleep(3) self.test.find_byid(cam_video_shutter_button).click() time.sleep(1) def case_into_camera_by_camera_button(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() self.driver.press_keycode(KEY_BACK, 0, 0) time.sleep(1) button_list = self.test.find_list_byclass(TextView) for b in button_list: str_tmp = b.text app_name = '骁龙相机' if app_name in str_tmp: b.click() time.sleep(3) break if not self.test.wait_if_activity(cam_Launcher): self.Case.fail("由相机快捷方式进入相机取景界面失败") def case_tack_landscape_photo(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() # TODO 设置为横屏 # self.test.set_LANDSCAPE() time.sleep(1) tmp_button = self.test.find_byid(cam_flash_button) if tmp_button is not None: shutterButton = self.test.find_byid(shutter_button) shutterButton.click() time.sleep(2) self.driver.press_keycode(KEY_BACK, 0, 0) time.sleep(1) self.test.swipe_UP(600, 3) time.sleep(1) self.test.find_byid(cam_front_back_switcher).click() time.sleep(2) else: self.test.find_byid(cam_front_back_switcher).click() time.sleep(2) shutterButton = self.test.find_byid(shutter_button) shutterButton.click() time.sleep(2) self.test.find_byid(cam_front_back_switcher).click() time.sleep(2) tmp_button = self.test.find_byid(cam_flash_button) if tmp_button is not None: self.Case.assertFalse(self.test.check_element(tmp_button), '预期不符,非前摄界面') shutterButton = self.test.find_byid(shutter_button) shutterButton.click() time.sleep(2) self.test.find_byid(cam_front_back_switcher).click() time.sleep(2) tmp_button = self.test.find_byid(cam_flash_button) self.Case.assertTrue(self.test.check_element(tmp_button), '预期不符,非后摄界面') time.sleep(1) def case_use_flash_take_photo(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() sutterButton = self.test.find_byid(shutter_button) sutterButton.click() time.sleep(2) self.driver.press_keycode(KEY_BACK, 0, 0) self.test.swipe_Down(600, 1) time.sleep(1) photo_info = self._check_photo_info() if photo_info is not None: flash_status = '使用了闪光灯' flag = False for photo in photo_info: str_tmp = photo.text if flash_status in str_tmp: flag = True break if not flag: self.Case.fail("未开启闪光灯") else: self.Case.fail("未找到照片信息") def case_sleep_when_taking_photo(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() if self.test.wait_if_activity(cam_Launcher): self.driver.lock(3) if not self.test.wait_if_activity(cam_Launcher): self.Case.fail("设备休眠后唤醒,不在取景界面") def case_set_vedio_and_photo(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() mode_list = self.test.find_list_byclass(TextView) for mode in mode_list: str_tmp = mode.text if '录像' in str_tmp: mode.click() time.sleep(2) break vedio_shutter = self.test.find_byid(cam_video_shutter_button) vedio_shutter.click() time.sleep(3) vedio_shutter.click() time.sleep(3) self.driver.press_keycode(KEY_BACK, 0, 0) time.sleep(1) self.driver.press_keycode(KEY_BACK, 0, 0) time.sleep(1) for i in range(3): self.test.swipe_Down(600, 1) time.sleep(1) file_text = self._check_photo_info('.mp4').text if file_text is None: self.Case.fail("录像失败,未找到录像文件") self.driver.terminate_app(filemanager_pkg) app_list = self.test.find_list_byclass(TextView) for app in app_list: str_tmp = app.text if '骁龙相机' in str_tmp: app.click() time.sleep(3) break mode_list = self.test.find_list_byclass(TextView) for mode in mode_list: str_tmp = mode.text if '拍照' in str_tmp: mode.click() time.sleep(1) break shutterbutton = self.test.find_byid(shutter_button) shutterbutton.click() shut_time = self.driver.get_device_time("h") time.sleep(3) self.driver.press_keycode(KEY_BACK, 0, 0) time.sleep(2) for i in range(3): self.test.swipe_Down(600, 1) file_info_list = self._check_photo_info() file_flag = False if file_info_list is not None: for file_info in file_info_list: str_tmp = file_info.text if '时间' in str_tmp: if shut_time in str_tmp: file_flag = True break if not file_flag: self.Case.fail("拍照后,未找到照片") def case_take_a_front_and_back_veido_and_play(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() mode_list = self.test.find_list_byclass(TextView) for mode in mode_list: str_tmp = mode.text if '录像' in str_tmp: mode.click() time.sleep(2) break vedio_shutter = self.test.find_byid(cam_video_shutter_button) vedio_shutter.click() time.sleep(3) vedio_shutter.click() time.sleep(1) switch_button = self.test.find_byid(cam_front_back_switcher) if switch_button is None: self.test.fail("未找到切换") switch_button.click() time.sleep(3) vedio_shutter.click() time.sleep(3) vedio_shutter.click() self.driver.press_keycode(KEY_BACK, 0, 0) time.sleep(1) self.driver.press_keycode(KEY_BACK, 0, 0) time.sleep(1) for i in range(3): self.test.swipe_Down(600, 1) time.sleep(1) file_name = self._check_photo_info('.mp4') file_name.click() time.sleep(3) def _check_photo_info(self, file_class='.jpg'): """检测拍照后的图片信息""" app_list = self.test.find_list_byclass(TextView) for a in app_list: str_tmp = a.text if '文件管理器' in str_tmp: a.click() time.sleep(2) break self.test.set_PORTRAIT() time.sleep(2) folder_list = self.test.find_list_byclass(TextView) for f in folder_list: str_tmp = f.text if 'DCIM' in str_tmp: f.click() time.sleep(3) break folder_second_list = self.test.find_list_byclass(TextView) for folder in folder_second_list: str_tmp = folder.text if 'Camera' in str_tmp: folder.click() time.sleep(3) break flie_list = self.test.find_list_byclass(TextView) for file in flie_list: str_tmp = file.text if file_class in str_tmp: if file_class == '.mp4': return file else: file.click() time.sleep(3) break more_flag = False while True: more_button = self.test.find_list_byclass(ImageButton) if more_button is None: actions = TouchAction(self.driver) actions.press(x=self.test.get_windows_width() / 2, y=self.test.get_windows_height() / 2).release().perform() time.sleep(3) else: for more in more_button: str_tmp = more.get_attribute('content-desc') if '更多选项' in str_tmp: more.click() time.sleep(3) break more_flag = True memu_list = self.test.find_list_byclass(TextView) for memu in memu_list: str_tmp = memu.text if '详细信息' in str_tmp: memu.click() time.sleep(3) break if more_flag: break info_list = self.test.find_list_byclass(TextView) self.driver.terminate_app(cam_Pkg) return info_list
class Doc_CaseMethod: def __init__(self, dev, failkey): self.driver = dev self.test = Action(self.driver) self.Case = TestCase() self.failkey = failkey self.new_name = TimeUtils.str_HMS_Name() def case_if_base(self, Skip=False): """设置基础,检查是否可以正常启动""" try: self.driver.activate_app(doc_pkg) except: self.test.start_activity(doc_pkg, doc_acivity) self.Case.assertTrue(self.test.wait_if_activity(doc_acivity), '启动 文件管理器 失败,超时5秒未检测到主界面') self.test.set_PORTRAIT() time.sleep(1) def case_check_root_menu(self): self.case_if_base() self.test.find_byacc(doc_root_menu).click() time.sleep(0.2) tmp_list = self.test.find_byid_list(ID_title) isImages = False isVideos = False isAudio = False isRecent = False for x in tmp_list: t = x.text if '最近' in t: isRecent = True continue if '图片' in t: isImages = True continue if '视频' in t: isVideos = True continue if '音频' in t: isAudio = True continue if not isRecent or not isAudio or not isVideos or not isImages: self.Case.fail( f'文件菜单不满足:图片:{isImages},视频:{isVideos},音频:{isAudio},最近:{isRecent}' ) time.sleep(1) def case_new_and_del_folder(self): self.case_if_base() self.test.find_byacc(Menu).click() time.sleep(0.2) tmp_list = self.test.find_byid_list(doc_action_menu) for x in tmp_list: t = x.text if '新建文件夹' in t: x.click() time.sleep(0.5) break tmp_list = self.test.find_list_byclass(Edit_Text) if tmp_list is None: self.Case.fail('文件夹名称输入框不存在') tmp_list[0].clear() tmp_list[0].send_keys(f'doc_{self.new_name}') tmp_list = self.test.find_byclass(Button, '确定').click() time.sleep(0.3) tmp_list = self.test.find_byid_list(ID_title) isNew = False touchAction = TouchAction(self.driver) for y in tmp_list: t = y.text if f'doc_{self.new_name}' in t: isNew = True touchAction.long_press(y) time.sleep(1.5) touchAction.release().perform() break if not isNew: self.Case.fail(f'文件夹不存在:[doc_{self.new_name}]') self.test.find_byid(doc_search_and_del).click() time.sleep(0.3) self.test.find_byclass(Button, '确定').click() time.sleep(1) tmp_list = self.test.find_byid_list(ID_title) if tmp_list is None: return for z in tmp_list: t = z.text if f'doc_{self.new_name}' in t: self.Case.fail(f'doc_{self.new_name},未删除') time.sleep(1) def case_new_and_change_folder(self): self.case_if_base() self.test.find_byacc(Menu).click() time.sleep(0.2) tmp_list = self.test.find_byid_list(doc_action_menu) for x in tmp_list: t = x.text if '新建文件夹' in t: x.click() time.sleep(0.5) break tmp_list = self.test.find_list_byclass(Edit_Text) if tmp_list is None: self.Case.fail('文件夹名称输入框不存在') tmp_list[0].clear() tmp_list[0].send_keys(f'doc_new_{self.new_name}') tmp_list = self.test.find_byclass(Button, '确定').click() time.sleep(0.3) tmp_list = self.test.find_byid_list(ID_title) isNew = False touchAction = TouchAction(self.driver) for y in tmp_list: t = y.text if f'doc_new_{self.new_name}' in t: isNew = True touchAction.long_press(y) time.sleep(1.5) touchAction.release().perform() break if not isNew: self.Case.fail(f'文件夹不存在:[doc_new_{self.new_name}]') self.test.find_byacc(Menu).click() time.sleep(0.2) tmp_list = self.test.find_byid_list(doc_action_menu) for x in tmp_list: t = x.text if '重命名' in t: x.click() time.sleep(0.5) break tmp_list = self.test.find_list_byclass(Edit_Text) if tmp_list is None: self.Case.fail('文件夹名称输入框不存在') tmp_list[0].clear() tmp_list[0].send_keys(f'doc_old_{self.new_name}') tmp_list = self.test.find_byclass(Button, '确定').click() time.sleep(0.3) tmp_list = self.test.find_byid_list(ID_title) isNew = False for y in tmp_list: t = y.text if f'doc_old_{self.new_name}' in t: isNew = True break if not isNew: self.Case.fail(f'文件夹不存在:[doc_old_{self.new_name}]') time.sleep(1) def case_del_music(self): self.case_if_base() self.test.find_byacc(doc_root_menu).click() time.sleep(0.2) tmp_list = self.test.find_byid_list(ID_title) for x in tmp_list: t = x.text if '音频' in t: x.click() time.sleep(0.5) break tmp_list = self.test.find_byid_list(ID_title) touchAction = TouchAction(self.driver) isNew = False for y in tmp_list: t = y.text if f'张含韵' in t: isNew = True y.click() time.sleep(1) break if not isNew: self.Case.fail(f"未找到相关歌曲文件: 张含韵") tmp_list = self.test.find_byid_list(ID_title) for z in tmp_list: t = z.text if f'歌曲' in t: z.click() time.sleep(1) break tmp_list = self.test.find_byid_list(ID_title) for g in tmp_list: t = g.text if f'doc_music' in t: touchAction.long_press(g) time.sleep(1.5) touchAction.release().perform() break time.sleep(0.5) self.test.find_byid(doc_search_and_del).click() time.sleep(0.3) self.test.find_byclass(Button, '确定').click() time.sleep(1) tmp_list = self.test.find_byid_list(ID_title) if tmp_list is None: return for d in tmp_list: t = d.text if 'doc_music' in t: self.Case.fail(f'张含韵 music ,未删除') time.sleep(1)
class FileManager_CaseMethod: def __init__(self, dev, failkey): self.driver = dev self.test = Action(self.driver) self.Case = TestCase() self.failkey = failkey self.new_name = TimeUtils.str_HMS_Name() def case_if_base(self, Skip=False): """设置基础,检查是否可以正常启动""" try: self.driver.activate_app(filemanager_pkg) except: self.test.start_activity(filemanager_pkg, filemanager_acivity) if not Skip: if self.test.wait_if_activity(Permissions_Activity): self.test.find_byid(Permission_allow_button).click() time.sleep(1) self.Case.assertTrue(self.test.wait_if_activity(filemanager_acivity), '启动 文件管理器 失败,超时5秒未检测到主界面') self.test.set_PORTRAIT() time.sleep(1) def case_new_folder(self): self.case_if_base(True) self.test.find_byid(filemanager_action_menu).click() time.sleep(0.5) tme_list = self.test.find_list_byclass(TextView) for x in tme_list: tmp_text = x.text if '新建文件夹' in tmp_text: x.click() time.sleep(0.5) break tmp_edit = self.test.find_byid(filemanager_input_nanme_edit) tmp_edit.clear() tmp_edit.send_keys('A_new_test_meig') self.test.find_byclass(Button, '确定').click() time.sleep(1) self.Case.assertTrue(self._find_folder_or_file('A_new_test_meig'), '未找到新建的文件夹 [A_new_test_meig]') def case_del_folder(self): self.case_if_base(True) if not self._find_folder_or_file('A_new_test_meig'): self.driver.terminate_app(filemanager_pkg) time.sleep(1) self.case_new_folder() time.sleep(1) tmp = self.test.find_list_byid(filemanager_list_name, 'A_new_test_meig') touchAction = TouchAction(self.driver) touchAction.long_press(tmp) time.sleep(1.5) touchAction.release().perform() time.sleep(0.5) self._get_action('删除').click() time.sleep(0.5) tmp = self.test.find_byid(filemanager_action_menu_title).text if '确认删除' not in tmp: self.Case.fail('未显示 删除 确认对话框') self.test.find_byclass(Button, '是').click() time.sleep(1) self.Case.assertFalse(self._find_folder_or_file('A_new_test_meig'), '未删除文件夹 [A_new_test_meig]') def case_change_folder(self): self.case_if_base(True) if not self._find_folder_or_file('A_new_test_meig'): self.driver.terminate_app(filemanager_pkg) time.sleep(1) self.case_new_folder() time.sleep(1) tmp = self.test.find_list_byid(filemanager_list_name, 'A_new_test_meig') touchAction = TouchAction(self.driver) touchAction.long_press(tmp) time.sleep(1.5) touchAction.release().perform() time.sleep(0.5) self._get_action('重命名').click() time.sleep(0.5) tmp_edit = self.test.find_byid(filemanager_input_nanme_edit) tmp_edit.clear() tmp_edit.send_keys(f'A_new_{self.new_name}') self.test.find_byclass(Button, '确定').click() time.sleep(1) self.Case.assertTrue( self._find_folder_or_file(f'A_new_{self.new_name}'), f'未找到 重命名 的文件夹[A_new_{self.new_name}]') def case_check_file(self): self.case_if_base(True) tmp = self._find_folder_or_file('text_test.txt') #text_test.txt if not tmp: self.Case.fail('未找到 [text_test.txt]') tmp = self.test.find_list_byid(filemanager_list_name, 'text_test.txt') tmp.click() self.Case.assertTrue(self.test.wait_if_activity(HTML_Activity), '文本编辑器未打开') time.sleep(1) isPass = False for x in range(5): if self.test.find_byclass(View, '1234567890abc') is not None: time.sleep(0.5) isPass = True break if not isPass: self.Case.fail('未找到 文本内容 [1234567890abc]') self.driver.terminate_app(HTML_pkg) time.sleep(1) def case_change_name_file(self): self.case_if_base(True) tmp = self._find_folder_or_file('text_test.txt') #text_test.txt if not tmp: self.Case.fail('未找到 [text_test.txt]') tmp = self.test.find_list_byid(filemanager_list_name, 'text_test.txt') touchAction = TouchAction(self.driver) touchAction.long_press(tmp) time.sleep(1.5) touchAction.release().perform() time.sleep(0.5) self._get_action('重命名').click() time.sleep(0.5) tmp_edit = self.test.find_byid(filemanager_input_nanme_edit) tmp_edit.clear() tmp_edit.send_keys(f'text_test_{self.new_name}.txt') self.test.find_byclass(Button, '确定').click() time.sleep(1) self.Case.assertTrue( self._find_folder_or_file(f'text_test_{self.new_name}.txt'), f'未找到 重命名 的文件夹[text_test_{self.new_name}.txt]') def case_new_del_file(self): self.case_if_base(True) self.test.find_byid(filemanager_action_menu).click() time.sleep(0.5) tme_list = self.test.find_list_byclass(TextView) for x in tme_list: tmp_text = x.text if '新建文件' == tmp_text: x.click() time.sleep(0.5) break tmp_edit = self.test.find_byid(filemanager_input_nanme_edit) tmp_edit.clear() tmp_edit.send_keys(f'A_new_file_{self.new_name}') self.test.find_byclass(Button, '确定').click() time.sleep(1) self.Case.assertTrue( self._find_folder_or_file(f'A_new_file_{self.new_name}'), f'未找到新建的文件夹 [A_new_file_{self.new_name}]') tmp = self._find_folder_or_file( f'A_new_file_{self.new_name}') #text_test.txt if not tmp: self.Case.fail(f'未找到 [A_new_file_{self.new_name}]') tmp = self.test.find_list_byid(filemanager_list_name, f'A_new_file_{self.new_name}') touchAction = TouchAction(self.driver) touchAction.long_press(tmp) time.sleep(1.5) touchAction.release().perform() time.sleep(0.5) self._get_action('删除').click() time.sleep(0.5) tmp = self.test.find_byid(filemanager_action_menu_title).text if '确认删除' not in tmp: self.Case.fail('未显示 删除 确认对话框') self.test.find_byclass(Button, '是').click() time.sleep(1) self.Case.assertFalse( self._find_folder_or_file(f'A_new_file_{self.new_name}'), f'未删除文件夹 [A_new_file_{self.new_name}]') def case_set_sort(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byacc(filemanager_root_menu).click() time.sleep(0.5) self.test.find_byid(filemanager_settings).click() self.Case.assertTrue( self.test.wait_if_activity(filemanager_settings_acivity), '未打开设置界面') time.sleep(1) tmp_list = self.test.find_list_byid(ID_title, '常规设置').click() time.sleep(1) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_y, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox) self._get_setting_menu('排列时区分大小写').click() time.sleep(0.5) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox) if tmp_y == tmp_x: self.Case.fail('[排列时区区分大小写] ,设置失败') time.sleep(0.5) def case_set_Folder_statistics(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byacc(filemanager_root_menu).click() time.sleep(0.5) self.test.find_byid(filemanager_settings).click() self.Case.assertTrue( self.test.wait_if_activity(filemanager_settings_acivity), '未打开设置界面') time.sleep(1) tmp_list = self.test.find_list_byid(ID_title, '常规设置').click() time.sleep(1) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_y, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox) self._get_setting_menu('计算文件夹统计数据').click() time.sleep(2) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox) if tmp_y == tmp_x: if x_1 == y_1: self.Case.fail('[计算文件夹统计数据] ,设置失败') time.sleep(0.5) def case_set_preview(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byacc(filemanager_root_menu).click() time.sleep(0.5) self.test.find_byid(filemanager_settings).click() self.Case.assertTrue( self.test.wait_if_activity(filemanager_settings_acivity), '未打开设置界面') time.sleep(1) tmp_list = self.test.find_list_byid(ID_title, '常规设置').click() time.sleep(1) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_y, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox) self._get_setting_menu('预览').click() time.sleep(0.5) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox) if tmp_y == tmp_x: self.Case.fail('[预览] ,设置失败') time.sleep(0.5) def case_set_sub_user_Permission(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byacc(filemanager_root_menu).click() time.sleep(0.5) self.test.find_byid(filemanager_settings).click() self.Case.assertTrue( self.test.wait_if_activity(filemanager_settings_acivity), '未打开设置界面') time.sleep(1) tmp_list = self.test.find_list_byid(ID_title, '常规设置').click() time.sleep(1) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_y, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox) self._get_setting_menu('限制用户访问').click() time.sleep(0.5) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox) if tmp_y == tmp_x: self.Case.fail('[限制用户访问] ,设置失败') time.sleep(0.5) def case_set_save_log(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byacc(filemanager_root_menu).click() time.sleep(0.5) self.test.find_byid(filemanager_settings).click() self.Case.assertTrue( self.test.wait_if_activity(filemanager_settings_acivity), '未打开设置界面') time.sleep(1) tmp_list = self.test.find_list_byid(ID_title, '常规设置').click() time.sleep(1) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_y, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox) tmp = self._get_setting_menu('记录调试信息') if tmp is None: time.sleep(1) return tmp.click() time.sleep(0.5) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox) if tmp_y == tmp_x: self.Case.fail('[记录调试信息] ,设置失败') time.sleep(0.5) def case_set_swipe_del(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byacc(filemanager_root_menu).click() time.sleep(0.5) self.test.find_byid(filemanager_settings).click() self.Case.assertTrue( self.test.wait_if_activity(filemanager_settings_acivity), '未打开设置界面') time.sleep(1) tmp_list = self.test.find_list_byid(ID_title, '常规设置').click() time.sleep(1) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_y, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox) tmp = self._get_setting_menu('使用滑动手势') tmp.click() time.sleep(0.5) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox) if tmp_x <= tmp_y: self._get_setting_menu('使用滑动手势').click() time.sleep(0.5) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_x, x_1 = self._get_checkbox_isTrue_number(tmp_checkbox) if tmp_x < tmp_y: self.Case.fail('[使用滑动手势] ,设置失败') time.sleep(1) def case_set_time_format(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byacc(filemanager_root_menu).click() time.sleep(0.5) self.test.find_byid(filemanager_settings).click() self.Case.assertTrue( self.test.wait_if_activity(filemanager_settings_acivity), '未打开设置界面') time.sleep(1) tmp_list = self.test.find_list_byid(ID_title, '常规设置').click() time.sleep(1) t = '' for x in range(3): tmp = self._get_setting_menu('日期格式') tmp.click() time.sleep(0.5) if x == 0: t = '系统指定' elif x == 1: t = '日/月/年' else: t = '年-月-日' self.test.find_byclass(CheckedTextView, t).click() time.sleep(0.5) self.driver.press_keycode(KEY_BACK, 0, 0) time.sleep(1) self.driver.press_keycode(KEY_BACK, 0, 0) time.sleep(1) test_time = TimeUtils.strDATEName() tmp = self.test.find_list_byid(filemanager_item_sub_summary, test_time) self.Case.assertIsNotNone(tmp, '时间非 [年-月-日] 格式') time.sleep(1) def case_set_search_CheckBox(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byacc(filemanager_root_menu).click() time.sleep(0.5) self.test.find_byid(filemanager_settings).click() self.Case.assertTrue( self.test.wait_if_activity(filemanager_settings_acivity), '未打开设置界面') time.sleep(1) tmp_list = self.test.find_list_byid(ID_title, '搜索选项').click() time.sleep(1) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_1, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox) self._get_setting_menu('高亮').click() time.sleep(0.5) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_2, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox) self._get_setting_menu('显示相关部件').click() time.sleep(0.5) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_3, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox) self._get_setting_menu('保存关键').click() time.sleep(0.5) tmp_checkbox = self.test.find_list_byclass(CheckBox) tmp_4, y_1 = self._get_checkbox_isTrue_number(tmp_checkbox) if tmp_1 != tmp_2 != tmp_3 != tmp_4: pass else: self.Case.fail( f'勾选框 设置失败:总计[{tmp_1}], 高亮 {tmp_2},显示相关部件 {tmp_3},保存关键字 {tmp_4}' ) time.sleep(0.5) def case_set_search_del_keyword(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byacc(filemanager_root_menu).click() time.sleep(0.5) self.test.find_byid(filemanager_settings).click() self.Case.assertTrue( self.test.wait_if_activity(filemanager_settings_acivity), '未打开设置界面') time.sleep(1) tmp_list = self.test.find_list_byid(ID_title, '搜索选项').click() time.sleep(1) tmp = self._get_setting_menu('删除保存的关键') if tmp.get_attribute('enabled') == "false": self._get_setting_menu('保存关键').click() time.sleep(0.5) self._get_setting_menu('删除保存的关键').click() self.test.if_toast_text('已删除所有搜索关键字') time.sleep(0.5) def case_set_search_result_sort(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byacc(filemanager_root_menu).click() time.sleep(0.5) self.test.find_byid(filemanager_settings).click() self.Case.assertTrue( self.test.wait_if_activity(filemanager_settings_acivity), '未打开设置界面') time.sleep(1) tmp_list = self.test.find_list_byid(ID_title, '搜索选项').click() time.sleep(1) t = '' for x in range(3): tmp = self._get_setting_menu('搜索结果排列方式') tmp.click() time.sleep(0.5) if x == 0: t = '无序' elif x == 1: t = '按相关性' else: t = '按名称' self.test.find_byclass(CheckedTextView, t).click() time.sleep(0.5) tmp = self.test.find_list_byid(ID_summary, '按名称') self.Case.assertIsNotNone(tmp, '设置 [按名称] 失败') time.sleep(1) def case_edit_settings(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byacc(filemanager_root_menu).click() time.sleep(0.5) self.test.find_byid(filemanager_settings).click() self.Case.assertTrue( self.test.wait_if_activity(filemanager_settings_acivity), '未打开设置界面') time.sleep(1) self.test.find_list_byid(ID_title, '编辑器选项').click() time.sleep(1) tmp = self._get_setting_menu('不显示建议') if tmp is None: self.Case.fail('编辑器界面未打开') tmp_list = self.test.find_list_byclass(CheckBox) isOpen = 0 for y in tmp_list: bool = y.get_attribute('checked') if bool == 'true': isOpen += 1 tmp_list = self.test.find_byid_list(ID_title) for x in tmp_list: tmp_text = x.text if "不显示建议" in tmp_text: x.click() if "自动换行" in tmp_text: x.click() if "二进制文件" in tmp_text: x.click() if "高亮语法" in tmp_text: x.click() time.sleep(1) tmp_list = self.test.find_list_byclass(CheckBox) isOpen1 = 0 for z in tmp_list: bool = z.get_attribute('checked') if bool == 'true': isOpen1 += 1 if isOpen1 == isOpen: self.Case.fail('编辑器选项子开光操作失败') time.sleep(1) def case_check_about_view(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byacc(filemanager_root_menu).click() time.sleep(0.5) self.test.find_byid(filemanager_settings).click() self.Case.assertTrue( self.test.wait_if_activity(filemanager_settings_acivity), '未打开设置界面') time.sleep(1) self.test.find_list_byid(ID_title, '关于').click() time.sleep(1) tmp = None for x in range(3): tmp = self.test.find_byid(filemanager_dialog_title_text) if tmp is not None: break time.sleep(1) if tmp is None: self.Case.fail('关于界面未打开') def case_check_filesystem_info(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byid(filemanager_filesystem_info).click() tmp = None for x in range(3): tmp = self.test.find_byid(filemanager_dialog_title_text) if tmp is not None: break time.sleep(1) if tmp is None: self.Case.fail('文件系统 界面未打开') tmp = self.test.find_byid(filemanager_filesystem_info_mount_point).text if "emulated" not in tmp: self.Case.fail("未检测到挂载点或者挂载点非{emulated}") self.test.find_byid( filemanager_filesystem_info_dialog_tab_disk_usage).click() time.sleep(1) tmp_total = self.test.find_byid( filemanager_filesystem_info_total_disk_usage).text tmp_used = self.test.find_byid( filemanager_filesystem_info_used_disk_usage).text tmp_free = self.test.find_byid( filemanager_filesystem_info_free_disk_usage).text try: tmp_total = re.search('[\d\\\.]+', tmp_total).group(0) tmp_used = re.search('[\d\\\.]+', tmp_used).group(0) tmp_free = re.search('[\d\\\.]+', tmp_free).group(0) except: self.Case.fail( f"正则匹配 空间大小数据失败,总共 {tmp_total}, 已使用 {tmp_used}, 剩余 {tmp_free}") try: if float(tmp_total) != (float(tmp_free) + float(tmp_used)): self.Case.fail( f"使用空间计算错误,总共 {tmp_total}, 已使用 {tmp_used}, 剩余 {tmp_free}") except ValueError: self.Case.fail( f"使用空间计算错误 ValueError ,总共 {tmp_total}, 已使用 {tmp_used}, 剩余 {tmp_free}" ) def case_set_sort_mode(self): self.case_if_base(True) time.sleep(0.5) for t in range(2): self.test.find_byid(filemanager_ab_configuration).click() tmp = None for x in range(3): tmp = self.test.find_byid(filemanager_ab_sort_mode) if tmp is not None: break time.sleep(1) if tmp is None: self.Case.fail('未找到 排列方式 按钮') tmp.click() tmp = None for x in range(3): if t == 0: tmp = self.test.find_list_byid( filemanager_option_list_item_text, '按名称排列 ▼') else: tmp = self.test.find_list_byid( filemanager_option_list_item_text, '按名称排列 ▲') if tmp is not None: break time.sleep(1) if tmp is None: self.Case.fail('未找到 排列方式 [按名称排列 ] 按钮') tmp.click() tmp = None for x in range(3): if t == 0: tmp = self.test.find_list_byid(filemanager_list_name, 'storage') else: tmp = self.test.find_list_byid(filemanager_list_name, 'Alarms') if tmp is not None: break time.sleep(1) if tmp is None: if t == 0: self.Case.fail('排列方式不正确,未按照字母表 降序') else: self.Case.fail('排列方式不正确,未按照字母表 升序') def case_set_layout_mode(self): self.case_if_base(True) time.sleep(0.5) for t in range(2): self.test.find_byid(filemanager_ab_configuration).click() tmp = None for x in range(3): tmp = self.test.find_byid(filemanager_ab_layout_mode) if tmp is not None: break time.sleep(1) if tmp is None: self.Case.fail('未找到 布局 按钮') tmp.click() tmp = None for x in range(3): if t == 0: tmp = self.test.find_list_byid( filemanager_option_list_item_text, '图标') else: tmp = self.test.find_list_byid( filemanager_option_list_item_text, '详细信息') if tmp is not None: break time.sleep(1) if tmp is None: self.Case.fail('未找到 布局方式 按钮') tmp.click() time.sleep(1) def case_check_menu_list(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byid(filemanager_action_menu).click() for x in range(3): if self.test.find_byid(filemanager_action_menu_title) is not None: break time.sleep(1) tmp = self.test.find_list_byclass(TextView) tmp_int = 0 for x in tmp: tmp_text = x.text if "属性" == tmp_text: tmp_int += 1 if "刷新" == tmp_text: tmp_int += 1 if "新建文件夹" == tmp_text: tmp_int += 1 if "新建文件" == tmp_text: tmp_int += 1 if "全部选择" == tmp_text: tmp_int += 1 if "取消全选" == tmp_text: tmp_int += 1 if "添加到书签" == tmp_text: tmp_int += 1 if "添加快捷方式" == tmp_text: tmp_int += 1 if "设置为主页" == tmp_text: tmp_int += 1 time.sleep(0.3) if tmp_int != 9: self.Case.fail(f'菜单不正确,没有9个,实际{tmp_int}') def case_check_file_info(self): self.case_if_base(True) tmp = self._find_folder_or_file('text_test_view.txt') #text_test.txt if not tmp: self.Case.fail('未找到 [text_test_view.txt]') tmp = self.test.find_list_byid(filemanager_list_name, 'text_test_view.txt') touchAction = TouchAction(self.driver) touchAction.long_press(el=tmp).release().perform() time.sleep(1) self._get_action("属性").click() tmp_int = 0 for x in range(3): if self.test.find_byid(filemanager_action_menu_title) is not None: break time.sleep(1) tmp = self.test.find_list_byclass(TextView) for x in tmp: tmp_text = x.text if "text_test_view.txt" == tmp_text: tmp_int += 1 if "text/plain" == tmp_text: tmp_int += 1 if "文本" == tmp_text: tmp_int += 1 time.sleep(0.4) if tmp_int != 3: self.Case.fail( f'文件名称、类型或者类别不正确,非 text_test_view.txt text/plain 文本') def case_click_refresh(self): self.case_if_base(True) time.sleep(0.5) self.test.find_byid(filemanager_action_menu).click() for x in range(3): if self.test.find_byid(filemanager_action_menu_title) is not None: break time.sleep(1) self._get_action("刷新").click() time.sleep(1) def case_check_png(self): self.case_if_base(True) time.sleep(0.5) tmp = self._find_folder_or_file('picture_11.png') #text_test.txt if not tmp: self.Case.fail('未找到 [picture_11.png]') tmp = self.test.find_list_byid(filemanager_list_name, 'picture_11.png') tmp.click() self.Case.assertTrue(self.test.wait_if_activity(gallery_activity), "图片未打开") time.sleep(0.5) self.driver.press_keycode(KEY_BACK, 0, 0) self.Case.assertTrue(self.test.wait_if_activity(filemanager_acivity), "未返回到文件管理器界面") time.sleep(0.5) def case_check_gif(self): self.case_if_base(True) time.sleep(0.5) tmp = self._find_folder_or_file('picture_12.gif') #text_test.txt if not tmp: self.Case.fail('未找到 [picture_12.gif]') tmp = self.test.find_list_byid(filemanager_list_name, 'picture_12.gif') tmp.click() self.Case.assertTrue(self.test.wait_if_activity(gallery_activity), "图片未打开") time.sleep(0.5) self.driver.press_keycode(KEY_BACK, 0, 0) self.Case.assertTrue(self.test.wait_if_activity(filemanager_acivity), "未返回到文件管理器界面") time.sleep(0.5) def case_check_music(self): self.case_if_base(True) time.sleep(0.5) tmp = self._find_folder_or_file('music_') #text_test.txt if not tmp: self.Case.fail('未找到 [music_]') tmp = self.test.find_list_byid(filemanager_list_name, 'music_') tmp.click() self.Case.assertTrue( self.test.wait_if_activity( music_video_music_AudioPreview_Activity), "播放音乐界面未打开") time.sleep(0.5) tmp = None for x in range(3): tmp = self.test.find_byid(music_video_music_progress) if tmp is not None: break self.Case.assertIsNotNone(tmp, '未检测到播放进度条') self.driver.press_keycode(KEY_BACK, 0, 0) self.Case.assertTrue(self.test.wait_if_activity(filemanager_acivity), "未返回到文件管理器界面") time.sleep(0.5) def case_check_video(self): self.case_if_base(True) time.sleep(0.5) tmp = self._find_folder_or_file('video_') #text_test.txt if not tmp: self.Case.fail('未找到 [video_]') tmp = self.test.find_list_byid(filemanager_list_name, 'video_') tmp.click() self.Case.assertTrue( self.test.wait_if_activity(music_video_Movie_acivity), "视频界面未打开") time.sleep(2) self.driver.press_keycode(KEY_BACK, 0, 0) self.Case.assertTrue(self.test.wait_if_activity(filemanager_acivity), "未返回到文件管理器界面") time.sleep(0.5) def case_Bluetooth_share(self): self.case_if_base(True) time.sleep(0.5) tmp = self._find_folder_or_file('text_test_view.txt') #text_test.txt if not tmp: self.Case.fail('未找到 [text_test_view.txt]') tmp = self.test.find_list_byid(filemanager_list_name, 'text_test_view.txt') touchAction = TouchAction(self.driver) touchAction.long_press(el=tmp).release().perform() time.sleep(1) self._get_action("发送").click() tmp = None for x in range(3): tmp = self.test.find_list_byid(filemanager_associations_item_text, "蓝牙") if tmp is not None: break time.sleep(1) tmp.click() time.sleep(1) tmp = self.test.find_list_byid(filemanager_associations_item_text, "蓝牙") if tmp is not None: tmp.click() self.Case.assertTrue(self.test.wait_if_activity(Bluetooth_share), '蓝牙分享界面未显示') tmp_list = None for x in range(5): tmp_list = self.test.find_byid_list(ID_title) tmp_int = len(tmp_list) if tmp_int > 4: break time.sleep(1) tmp_list[len(tmp_list) - 1].click() time.sleep(1) def _find_folder_or_file(self, textkey): for y in range(10): if self.test.find_list_byid(filemanager_list_name, textkey) is not None: return True self.test.swipe_Down(600, 1) time.sleep(0.3) return False def _get_action(self, keytext): tme_list = self.test.find_list_byclass(TextView) for x in tme_list: tmp_text = x.text if keytext in tmp_text: return x return None def _get_checkbox_isTrue_number(self, list_checkbox): y = 0 for x in list_checkbox: if 'true' in x.get_attribute('checked'): y += 1 return y, len(list_checkbox) def _get_setting_menu(self, keytext): for x in range(5): tmp = self.test.find_list_byid(ID_title, keytext) if tmp is not None: return tmp self.test.swipe_Down(600, 1) time.sleep(1) return None