class Music_Video_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.Case.assertTrue( self.test.start_activity(music_video_pkg, music_video_acivity), '启动 视频 失败,超时5秒未检测到主界面') def case_if_music_base(self, skip=False): """检查是否可以正常启动""" self.test.start_activity(music_video_pkg, music_video_music_acivity) time.sleep(1) if not skip: for x in range(3): if self.test.wait_if_activity(Permissions_Activity, timeout=3): time.sleep(0.3) self.test.find_byid(Permission_allow_button).click() time.sleep(0.5) else: time.sleep(1) break self.Case.assertTrue( self.test.wait_if_activity(music_video_music_acivity), '启动 音乐 失败,超时5秒未检测到主界面') time.sleep(1) def case_play_video(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.Case.assertTrue( self.test.start_activity(music_video_pkg, music_video_acivity), '启动 视频 失败,超时5秒未检测到主界面') time.sleep(1) if self._check_video_list('video_1'): self.test.find_list_byid(TEXT_ID_1, 'video_1').click() self.Case.assertTrue( self.test.wait_if_activity(music_video_Movie_acivity), '启动 视频播放 失败,超时5秒未检测到界面') for y in range(5): if y > 2: self.Case.assertTrue( self.test.wait_if_activity(music_video_acivity), '启动 视频播放完毕未返回主界面,超时5秒未检测到界面') break time.sleep(3) time.sleep(1) def case_play_stop_video(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.Case.assertTrue( self.test.start_activity(music_video_pkg, music_video_acivity), '启动 视频 失败,超时5秒未检测到主界面') time.sleep(1) if self._check_video_list('video_2'): self.test.find_list_byid(TEXT_ID_1, 'video_2').click() self.Case.assertTrue( self.test.wait_if_activity(music_video_Movie_acivity), '启动 视频播放 失败,超时5秒未检测到界面') self.test.find_byid(gallery_video_surface_view).click() self.test.find_byid(gallery_video_surface_view).click() time.sleep(1) tmp = self.test.find_byacc('播放视频') if tmp is not None: tmp.click() else: self.Case.fail('视频暂停失败,请检查') for y in range(16): if y > 13: self.Case.assertTrue( self.test.wait_if_activity(music_video_acivity), '启动 视频播放完毕未返回主界面,超时5秒未检测到界面') break time.sleep(3) time.sleep(1) def case_sleep_replay_video(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.Case.assertTrue( self.test.start_activity(music_video_pkg, music_video_acivity), '启动 视频 失败,超时5秒未检测到主界面') time.sleep(1) if self._check_video_list('video_2'): self.test.find_list_byid(TEXT_ID_1, 'video_2').click() self.Case.assertTrue( self.test.wait_if_activity(music_video_Movie_acivity), '启动 视频播放 失败,超时5秒未检测到界面') time.sleep(3) self.driver.lock(1) # 休眠一秒 self.Case.assertTrue( self.test.wait_if_activity(music_video_Movie_acivity), '启动 视频播放 失败,超时5秒未检测到界面') for y in range(16): if y > 12: self.Case.assertTrue( self.test.wait_if_activity(music_video_acivity), '启动 视频播放完毕未返回主界面,超时5秒未检测到界面') break time.sleep(3) time.sleep(1) def case_play_music(self): self.case_if_music_base(True) self.test.find_byacc(music_video_music_menu).click() time.sleep(0.2) self.test.find_list_byid(music_video_music_menu_title, '歌曲').click() time.sleep(1) self._find_music('music_7').click() time.sleep(1) tmp = self.test.find_byid(music_video_music_list_nowplay_icon) self.Case.assertIsNotNone(tmp, '歌曲未在播放') time.sleep(3) tmp.click() time.sleep(0.5) def _find_music(self, keytext): for y in range(10): el = self.test.find_list_byid(music_video_music_list, keytext) if el is not None: return el self.test.swipe_Down(600, 1) time.sleep(0.2) return None def _check_video_list(self, keytext): for y in range(10): if self.test.find_list_byid(TEXT_ID_1, keytext) is not None: return True self.test.swipe_Down(600, 1) time.sleep(0.2) return False def case_music_play_three_class_music_flie(self): self.case_if_music_base(True) ogg_flag = False mp3_flag = False flac_flag = False for i in range(3): time.sleep(3) flie_list = self.test.find_byid_list(music_video_music_list) for n in flie_list: if not ogg_flag: if ".ogg" in n.text: n.click() time.sleep(3) ogg_flag = True continue if not mp3_flag: if ".mp3" in n.text: n.click() time.sleep(3) mp3_flag = True continue if not flac_flag: if ".flac" in n.text: n.click() time.sleep(3) flac_flag = True continue if not ogg_flag or not mp3_flag or not flac_flag: # 若有未找到3类型中一种则下滑列表重新获取 self.test.swipe_Down(600, 1) time.sleep(0.3) if not ogg_flag or not mp3_flag or not flac_flag: self.Case.fail( f"播放失败,ogg:{ogg_flag},mp3{mp3_flag},flac{flac_flag}") self.test.find_byid(music_video_music_list_nowplay_icon).click() def case_music_detail_replay_music_1(self): self.case_if_music_base(True) self.test.find_byid( music_video_music_current_song_album).click() # 进入歌曲详细页面 time.sleep(3) self.test.find_byid( music_video_music_detail_currentlist).click() # 显示当前播放列表 replay = self.test.find_byid(music_video_music_detail_replay_button) replay_status = self._check_replay_close(replay) if not replay_status: self.Case.fail("未切换至关闭重新播放模式") elif replay_status: self._find_lost_muisc_and_play() self._replay_muisc_skip() totaltime = self.test.find_byid( music_video_music_detail_totaltime).text for i in range(10): time.sleep(3) currenttime = self.test.find_byid( music_video_music_detail_crrenttime).text if currenttime == totaltime: break replay_status = self._check_replay_list(replay) if not replay_status: self.Case.fail("未切换至重新播放列表模式") elif replay_status: self._find_lost_muisc_and_play() current_music = self.test.find_byid( music_video_music_list_song_name) self._replay_muisc_skip() for i in range(3): time.sleep(3) if not current_music.text == self.test.find_byid( music_video_music_list_song_name).text: self.test.find_byid( music_video_music_list_song_name).click() break def case_music_detail_replay_music_2(self): self.case_if_music_base(True) self.test.find_byid( music_video_music_current_song_album).click() # 进入歌曲详细页面 time.sleep(3) self.test.find_byid( music_video_music_detail_currentlist).click() # 显示当前播放列表 replay = self.test.find_byid(music_video_music_detail_replay_button) replay_status = self._check_replay_current(replay) if not replay_status: self.Case.fail("未切换至重新播放当前音乐模式") elif replay_status: current_music = self.test.find_byid( music_video_music_list_song_name) self.test.find_byid(music_video_music_play_pause).click() self._replay_muisc_skip() for i in range(3): time.sleep(3) if current_music.text == self.test.find_byid( music_video_music_list_song_name).text: break def _check_replay_close(self, el): for i in range(3): el.click() if self.test.if_toast_text("重复播放已关闭。") is not None: return True return False def _check_replay_list(self, el): for i in range(3): el.click() if self.test.if_toast_text("重复播放所有歌曲。") is not None: return True return False def _check_replay_current(self, el): for i in range(3): el.click() if self.test.if_toast_text("重复播放当前歌曲。") is not None: return True return False def _replay_muisc_skip(self): progress_loc = self.test.find_byid(music_video_music_detail_progress) loc = progress_loc.location actions = TouchAction(self.driver) actions.long_press(x=(self.test.get_windows_height() * 0.3), y=loc['y']) actions.move_to(x=(self.test.get_windows_width() * 0.98), y=loc['y']) actions.release().perform() def _find_lost_muisc_and_play(self): #self.test.find_byid(music_video_music_detail_currentlist).click() for i in range(3): self.test.swipe_Down(600, 1) time.sleep(0.3) detail_muisclist = self.test.find_byid_list(music_video_music_list) if detail_muisclist is not None: detail_lostmuisc = detail_muisclist[len(detail_muisclist) - 1] detail_lostmuisc.click() time.sleep(0.2) if self.test.find_byid(music_video_music_list_song_name ).text != detail_lostmuisc.text: self.Case.fail('播放的音乐与选定的音乐不同') def case_music_detail_pervious_play(self): self.case_if_music_base(True) self.test.find_byid( music_video_music_current_song_album).click() # 进入歌曲详细页面 time.sleep(3) self.test.find_byid( music_video_music_detail_currentlist).click() # 显示当前播放列表 current_music = self.test.find_byid(music_video_music_list_song_name) for i in range(3): self.test.swipe_Down(600, 1) time.sleep(0.3) detail_musiclist = self.test.find_byid_list( music_video_music_list) # 获取当前歌曲列表 pervious_music = detail_musiclist[len(detail_musiclist) - 1] if current_music.text != pervious_music.text: self.test.find_byid(music_video_music_detail_previous).click() time.sleep(1) if not self.test.find_byid(music_video_music_list_song_name ).text == pervious_music.text: self.Case.fail("上一曲功能失败") def case_music_detail_next_play(self): self.case_if_music_base(True) self.test.find_byid( music_video_music_current_song_album).click() #进入歌曲详细页面 time.sleep(3) self.test.find_byid( music_video_music_detail_currentlist).click() #显示当前播放列表 for i in range(3): self.test.swipe_UP(600, 1) time.sleep(0.3) detail_musiclist = self.test.find_byid_list( music_video_music_list) #获取当前歌曲列表 current_music = detail_musiclist[0] current_music.click() next_music = detail_musiclist[1] if current_music.text != next_music.text: self.test.find_byid(music_video_music_detail_next).click() if not self.test.find_byid( music_video_music_list_song_name).text == next_music.text: self.Case.fail("下一曲功能失败") def case_music_detail_play_and_pause(self): self.case_if_music_base(True) self.test.find_byid( music_video_music_current_song_album).click() # 进入歌曲详细页面 time.sleep(3) self.test.find_byid( music_video_music_detail_currentlist).click() # 显示当前播放列表 current_time = self.test.find_byid( music_video_music_detail_crrenttime).text play_and_pause = self.test.find_byid(music_video_music_play_pause) play_and_pause.click() time.sleep(2) if current_time == self.test.find_byid( music_video_music_detail_crrenttime).text: self.Case.fail("歌曲继续播放功能失败") play_and_pause.click() current_time = self.test.find_byid( music_video_music_detail_crrenttime).text for i in range(3): time.sleep(3) if current_time != self.test.find_byid( music_video_music_detail_crrenttime).text: self.Case.fail("歌曲暂停功能失败") def case_music_detail_random_close(self): self.case_if_music_base(True) self.test.find_byid( music_video_music_current_song_album).click() # 进入歌曲详细页面 time.sleep(3) self.test.find_byid( music_video_music_detail_currentlist).click() # 显示当前播放列表 time.sleep(1) detail_musiclist = self.test.find_byid_list(music_video_music_list) for i in range(3): self.test.find_byid(music_video_music_detail_random).click() if self.test.if_toast_text("随机播放已关闭。") is not None: detail_musiclist[0].click() time.sleep(0.2) next_button = self.test.find_byid( music_video_music_detail_next) next_button.click() if detail_musiclist[1].text != self.test.find_byid( music_video_music_list_song_name).text: self.Case.fail("随机播放关闭功能失败") break def case_music_detail_random(self): self.case_if_music_base(True) self.test.find_byid( music_video_music_current_song_album).click() # 进入歌曲详细页面 time.sleep(3) self.test.find_byid( music_video_music_detail_currentlist).click() # 显示当前播放列表 time.sleep(1) detail_musiclist = self.test.find_byid_list(music_video_music_list) for i in range(3): self.test.find_byid(music_video_music_detail_random).click() if self.test.if_toast_text("随机播放已打开。") is not None: detail_musiclist[0].click() time.sleep(0.2) next_button = self.test.find_byid( music_video_music_detail_next) next_button.click() time.sleep(0.2) if detail_musiclist[1].text == self.test.find_byid( music_video_music_list_song_name).text: next_button.click(0.2) if detail_musiclist[2].text == self.test.find_byid( music_video_music_list_song_name).text: self.Case.fail("随机播放功能失败") break def case_music_delete_file(self): self.case_if_music_base(True) music_list = self.test.find_byid_list(music_video_music_list) indicator_list = self.test.find_byid_list( music_video_music_indicator_list) music_name = music_list[0].text indicator_list[0].click() time.sleep(1) delete_button = self.test.find_list_byid(music_video_music_title_list, '删除') delete_button.click() time.sleep(1) delete_flie = self.test.find_byid(music_video_music_delete) delete_flie.click() time.sleep(1) if self.test.find_list_byid(music_video_music_list, music_name) is not None: self.Case.fail("删除音乐文件失败") def case_video_main_activity_keydown_recent(self): self.case_if_base() time.sleep(1) self.driver.press_keycode(187, 0, 0) # all apps list 多任务管理按钮 time.sleep(2) self.driver.press_keycode(4, 0, 0) time.sleep(2) self.Case.assertTrue(self.test.wait_if_activity(music_video_acivity), '没有返回视频 主界面') def case_video_Movie_activity_keydown_recent(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base() time.sleep(1) if self._check_video_list('video_2'): self.test.find_list_byid(TEXT_ID_1, 'video_2').click() self.Case.assertTrue( self.test.wait_if_activity(music_video_Movie_acivity), '启动 视频播放 失败,超时5秒未检测到界面') time.sleep(2) self.driver.press_keycode(187, 0, 0) # all apps list 多任务管理按钮 time.sleep(2) self.driver.press_keycode(4, 0, 0) time.sleep(2) self.Case.assertTrue( self.test.wait_if_activity(music_video_Movie_acivity), '没有返回 播放 界面') time.sleep(0.5) self.driver.press_keycode(4, 0, 0) time.sleep(1) def case_video_Movie_activity_keydown_home(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base() time.sleep(1) if self._check_video_list('video_2'): self.test.find_list_byid(TEXT_ID_1, 'video_2').click() self.Case.assertTrue( self.test.wait_if_activity(music_video_Movie_acivity), '启动 视频播放 失败,超时5秒未检测到界面') time.sleep(2) self.driver.press_keycode(3, 0, 0) #HOME键 time.sleep(2) try: self.Case.assertTrue( self.test.start_activity(music_video_pkg, music_video_acivity), '未成功返回播放界面') except selenium.common.exceptions.WebDriverException: pass self.driver.press_keycode(4, 0, 0) time.sleep(1) def case_video_Movie_activity_longkeydown_power(self): if TestResult.getTestFail(self.failkey): self.Case.skipTest('case_if_base test fail, skip this') self.case_if_base() time.sleep(1) if self._check_video_list('video_2'): self.test.find_list_byid(TEXT_ID_1, 'video_2').click() self.Case.assertTrue( self.test.wait_if_activity(music_video_Movie_acivity), '启动 视频播放 失败,超时5秒未检测到界面') time.sleep(2) self.driver.long_press_keycode(26, 0, 0) # power键 time.sleep(0.2) self.driver.press_keycode(4, 0, 0) time.sleep(1) def case_music_set_widget(self): self.driver.press_keycode(3, 0, 0) time.sleep(1) tmp = get_widget_menu(self.driver) if tmp is None: self.Case.fail('未成功长按出 桌面 小菜单') tmp.click() time.sleep(1) tmp = widget_list_swipe_Down(self.driver) if tmp is None: self.Case.fail('未找到音乐小挂件') touchAction = TouchAction(self.driver) touchAction.long_press(el=tmp) time.sleep(2) touchAction.release().perform() time.sleep(1) tmp = self.test.find_byid(music_video_widget_icon) if tmp is None: self.Case.fail('音乐桌面小图标,未放置成功') tmp.click() self.Case.assertTrue( self.test.wait_if_activity(music_video_music_acivity), '通过桌面小挂件打开音乐失败') time.sleep(1) def case_music_set_singer_view(self): self.case_if_music_base(True) time.sleep(1) self.test.find_byacc(music_video_music_menu).click() time.sleep(0.2) self.test.find_list_byid(music_video_music_menu_title, '音乐人').click() time.sleep(1) tmp_list = self.test.find_list_byclass(TextView) for x in tmp_list: t = x.text if '付娜' in t: time.sleep(1) return if '中央芭蕾舞团管弦乐队' in t: time.sleep(1) return if '周深' in t: time.sleep(1) return if '张含韵' in t: time.sleep(1) return self.Case.fail('歌曲非 歌手 列表排列') def case_music_add_play_list(self): time_name = TimeUtils.str_HMS_Name() self.case_if_music_base(True) time.sleep(1) if self.test.find_byclass(TextView, '歌曲', isText=True) is None: self.test.find_byacc(music_video_music_menu).click() time.sleep(0.2) self.test.find_list_byid(music_video_music_menu_title, '歌曲').click() time.sleep(1) tmp_list = self.test.find_byid_list(music_video_music_indicator_list) tmp_int = random.randint(2, len(tmp_list) - 2) tmp_list[tmp_int].click() time.sleep(0.5) self.test.find_list_byid(ID_title, '添加到播放列表').click() time.sleep(0.5) self.test.find_list_byid(ID_title, '新建播放列表').click() time.sleep(0.5) tmp_el = self.test.find_byid(music_video_music_playlist_edit) tmp_el.clear() tmp_el.send_keys(f'list_{time_name}') self.test.find_byid(music_video_music_create_playlist).click() if self.test.if_toast_text('歌曲已添加到播放列表') is None: log('error', '添加到 收藏,未找到 toast') self.test.find_byacc(music_video_music_menu).click() time.sleep(1) self.test.find_list_byid(music_video_music_menu_title, '播放列表').click() time.sleep(1) self._checK_play_list(f'list_{time_name}').click() time.sleep(1) tmp = self.test.find_byclass(TextView, 'music_') if tmp is None: self.Case.fail('列表中没有音乐 {music_}') def case_music_favorite(self): self.case_if_music_base(True) time.sleep(1) if self.test.find_byclass(TextView, '歌曲', isText=True) is None: self.test.find_byacc(music_video_music_menu).click() time.sleep(0.2) self.test.find_list_byid(music_video_music_menu_title, '歌曲').click() time.sleep(1) tmp_int = random.randint(1, 8) test_name = f'music_{tmp_int}' self._find_music(test_name).click() time.sleep(1) self.test.find_byid(music_video_music_list_nowplay_icon).click() time.sleep(1) self.test.find_byid(music_video_music_list_song_name).click() time.sleep(1) self.test.find_byid(music_video_music_favorite).click() if self.test.if_toast_text('歌曲已添加到播放列表') is None: log('error', '添加到 收藏,未找到 toast') self.driver.press_keycode(4, 0, 0) time.sleep(1) self.test.find_byacc(music_video_music_menu).click() time.sleep(1) self.test.find_list_byid(music_video_music_menu_title, '播放列表').click() time.sleep(1) self._checK_play_list('我的收藏').click() time.sleep(1) tmp = self.test.find_byclass(TextView, test_name) if tmp is None: self.Case.fail(f'列表中没有音乐 {test_name}') def case_music_share(self): self.case_if_music_base(True) time.sleep(1) if self.test.find_byclass(TextView, '歌曲', isText=True) is None: self.test.find_byacc(music_video_music_menu).click() time.sleep(0.2) self.test.find_list_byid(music_video_music_menu_title, '歌曲').click() time.sleep(1) tmp_list = self.test.find_byid_list(music_video_music_indicator_list) tmp_int = random.randint(2, len(tmp_list) - 2) tmp_list[tmp_int].click() time.sleep(0.5) self.test.find_list_byid(ID_title, '分享').click() time.sleep(1) if not self.test.wait_if_activity(Share_Activity): self.Case.fail(f'分享界面未显示') tmp_list = self.test.find_list_byclass(TextView) isBluetooth = False isNFC = False for x in tmp_list: t = x.text if '蓝牙' in t: isBluetooth = True if 'NFC' in t or 'Beam' in t: isNFC = True if isBluetooth and isNFC: time.sleep(1) return if not isNFC: self.Case.fail(f'没有NFC分享 选项,请确认是否需要') if not isBluetooth: self.Case.fail(f'没有蓝牙分享 选项,请确认是否需要') def case_music_bgm_rec_sms(self): self.case_if_music_base(True) time.sleep(1) if self.test.find_byclass(TextView, '歌曲', isText=True) is None: self.test.find_byacc(music_video_music_menu).click() time.sleep(0.2) self.test.find_list_byid(music_video_music_menu_title, '歌曲').click() time.sleep(1) for x in range(5): tmp_int = random.randint(1, 8) test_name = f'music_{tmp_int}' tmp = self._find_music(test_name) if tmp is not None: tmp.click() break time.sleep(1) self.driver.press_keycode(KEY_HOME, 0, 0) time.sleep(1) messaging_CaseMethod = Messaging_CaseMethod( self.driver, 'case_Messaging_A_test_if_base') messaging_CaseMethod.case_if_send_and_rec_sms() time.sleep(1) self.driver.press_keycode(KEY_HOME, 0, 0) time.sleep(1) self.case_if_music_base(True) time.sleep(1) self.test.find_byid(music_video_music_list_nowplay_icon).click() time.sleep(1) def case_music_bgm_camera(self): self.case_if_music_base(True) time.sleep(1) if self.test.find_byclass(TextView, '歌曲', isText=True) is None: self.test.find_byacc(music_video_music_menu).click() time.sleep(0.2) self.test.find_list_byid(music_video_music_menu_title, '歌曲').click() time.sleep(1) for x in range(5): tmp_int = random.randint(1, 8) test_name = f'music_{tmp_int}' tmp = self._find_music(test_name) if tmp is not None: tmp.click() break time.sleep(1) self.driver.press_keycode(KEY_HOME, 0, 0) time.sleep(1) camera_CaseMethod = Camera_CaseMethod(self.driver, 'case_Camera_A_test_if_base') camera_CaseMethod.case_back_front_take_a_picture() time.sleep(1) self.driver.press_keycode(KEY_HOME, 0, 0) time.sleep(1) self.case_if_music_base(True) time.sleep(1) self.test.find_byid(music_video_music_list_nowplay_icon).click() time.sleep(1) def case_music_bgm_video(self): self.case_if_music_base(True) time.sleep(1) if self.test.find_byclass(TextView, '歌曲', isText=True) is None: self.test.find_byacc(music_video_music_menu).click() time.sleep(0.2) self.test.find_list_byid(music_video_music_menu_title, '歌曲').click() time.sleep(1) for x in range(5): tmp_int = random.randint(1, 8) test_name = f'music_{tmp_int}' tmp = self._find_music(test_name) if tmp is not None: tmp.click() break time.sleep(1) self.driver.press_keycode(KEY_HOME, 0, 0) time.sleep(1) camera_CaseMethod = Camera_CaseMethod(self.driver, 'case_Camera_A_test_if_base') camera_CaseMethod.case_back_front_take_a_video() time.sleep(1) self.driver.press_keycode(KEY_HOME, 0, 0) time.sleep(1) self.case_if_music_base(True) time.sleep(1) self.test.find_byid(music_video_music_list_nowplay_icon).click() time.sleep(1) def case_music_bgm_play_film(self): self.case_if_music_base(True) time.sleep(1) if self.test.find_byclass(TextView, '歌曲', isText=True) is None: self.test.find_byacc(music_video_music_menu).click() time.sleep(0.2) self.test.find_list_byid(music_video_music_menu_title, '歌曲').click() time.sleep(1) for x in range(5): tmp_int = random.randint(1, 8) test_name = f'music_{tmp_int}' tmp = self._find_music(test_name) if tmp is not None: tmp.click() break time.sleep(1) self.driver.press_keycode(KEY_HOME, 0, 0) time.sleep(1) self.case_play_video() time.sleep(1) def case_music_notifications_widget_test(self): self.case_if_music_base(True) time.sleep(1) if self.test.find_byclass(TextView, '歌曲', isText=True) is None: self.test.find_byacc(music_video_music_menu).click() time.sleep(0.2) self.test.find_list_byid(music_video_music_menu_title, '歌曲').click() time.sleep(1) for x in range(5): tmp_int = random.randint(1, 8) test_name = f'music_{tmp_int}' tmp = self._find_music(test_name) if tmp is not None: tmp.click() break time.sleep(1) self.driver.open_notifications() time.sleep(0.5) self.test.find_byid(music_video_music_widget_next).click() time.sleep(1) tmp_text = self.test.find_byid(music_video_music_widget_song_name).text if test_name in tmp_text: self.Case.fail(f'没有更换下一曲') time.sleep(1) self.test.find_byid(music_video_music_widget_prev).click() time.sleep(1) tmp_text_1 = self.test.find_byid( music_video_music_widget_song_name).text if tmp_text in tmp_text_1: self.Case.fail(f'没有更换上一曲') time.sleep(1) self.test.find_byid(music_video_music_widget_pause).click() time.sleep(0.5) self.driver.press_keycode(KEY_BACK, 0, 0) time.sleep(0.5) self.Case.assertTrue( self.test.wait_if_activity(music_video_music_acivity), '未检测到音乐界面') time.sleep(0.5) def _checK_play_list(self, key): for x in range(5): tmp = self.test.find_byclass(TextView, key) if tmp is not None: return tmp self.test.swipe_Down(600, 1) time.sleep(0.5) return None
class CALC_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): """检查是否可以正常启动""" try: self.driver.activate_app(calc_pkg) except: self.test.start_activity(calc_pkg, calc_acivity) self.Case.assertTrue(self.test.wait_if_activity(calc_acivity), '启动 计算器 失败,超时5秒未检测到主界面') time.sleep(1) def case_get_add_result(self): self.case_if_base() int_a = random.randint(0, 9) int_b = random.randint(0, 9) time.sleep(0.2) self.test.find_byid(f'{calc_number_test}{int_a}').click() self.test.find_byid(calc_op_add).click() self.test.find_byid(f'{calc_number_test}{int_b}').click() self.test.find_byid(calc_eq).click() time.sleep(0.1) tmp = self.test.find_byid(calc_show_result).text if (int_a + int_b) != int(tmp): self.Case.fail(f'计算结果失败,{int_a} + {int_b} = {tmp}') time.sleep(0.5) self.test.find_byid(calc_clr).click() tmp = self.test.find_byid(calc_show_result).text if tmp not in '': self.Case.fail(f'计算结果未清除') time.sleep(0.5) def case_get_sub_result(self): self.case_if_base() int_a = random.randint(0, 9) int_b = random.randint(0, 9) time.sleep(0.2) self.test.find_byid(f'{calc_number_test}{int_a}').click() self.test.find_byid(calc_op_sub).click() self.test.find_byid(f'{calc_number_test}{int_b}').click() self.test.find_byid(calc_eq).click() time.sleep(0.1) tmp = self.test.find_byid(calc_show_result).text tmp_new = re.search('\d+', tmp).group(0) if int_a >= int_b: if (int_a - int_b) != int(tmp): self.Case.fail( f'计算结果失败 int_a >= int_b: {int_a} - {int_b} = {tmp}') else: try: int(tmp) self.Case.fail( f'计算结果失败 - not in tmp: {int_a} - {int_b} = {tmp}') except ValueError: pass if (int_b - int_a) != int(tmp_new): self.Case.fail(f'计算结果失败 tmp_new: {int_a} - {int_b} = {tmp}') time.sleep(0.5) self.test.find_byid(calc_clr).click() tmp = self.test.find_byid(calc_show_result).text if tmp not in '': self.Case.fail(f'计算结果未清除') time.sleep(0.5) def case_get_mul_result(self): self.case_if_base() int_a = random.randint(0, 9) int_b = random.randint(0, 9) time.sleep(0.2) self.test.find_byid(f'{calc_number_test}{int_a}').click() self.test.find_byid(calc_op_mul).click() self.test.find_byid(f'{calc_number_test}{int_b}').click() self.test.find_byid(calc_eq).click() time.sleep(0.1) tmp = self.test.find_byid(calc_show_result).text if (int_a * int_b) != int(tmp): self.Case.fail(f'计算结果失败: {int_a} * {int_b} = {tmp}') time.sleep(0.5) self.test.find_byid(calc_clr).click() tmp = self.test.find_byid(calc_show_result).text if tmp not in '': self.Case.fail(f'计算结果未清除') time.sleep(0.5) def case_get_div_result(self): self.case_if_base() int_a = random.randint(0, 9) int_b = random.randint(0, 9) time.sleep(0.2) self.test.find_byid(f'{calc_number_test}{int_a}').click() self.test.find_byid(calc_op_div).click() self.test.find_byid(f'{calc_number_test}{int_b}').click() self.test.find_byid(calc_eq).click() time.sleep(0.1) tmp = self.test.find_byid(calc_show_result).text try: tmp = float(tmp) except ValueError: if int_b != 0: self.Case.fail(f'计算结果失败 ValueError: {int_a} / {int_b} = {tmp}') else: return tmp = round(tmp, 2) if round(int_a / int_b, 2) != tmp: self.Case.fail(f'计算结果失败: {int_a} / {int_b} = {tmp}') time.sleep(0.5) self.test.find_byid(calc_clr).click() tmp = self.test.find_byid(calc_show_result).text if tmp not in '': self.Case.fail(f'计算结果未清除') time.sleep(0.5) def case_switch_UI_check(self): self.case_if_base() if self.test.find_byid(calc_number_1) is None: self.Case.fail("未找到‘1’按钮") if self.test.find_byid(calc_number_2) is None: self.Case.fail("未找到‘2’按钮") if self.test.find_byid(calc_number_3) is None: self.Case.fail("未找到‘3’按钮") if self.test.find_byid(calc_number_4) is None: self.Case.fail("未找到‘4’按钮") if self.test.find_byid(calc_number_5) is None: self.Case.fail("未找到‘5’按钮") if self.test.find_byid(calc_number_6) is None: self.Case.fail("未找到‘6’按钮") if self.test.find_byid(calc_number_7) is None: self.Case.fail("未找到‘7’按钮") if self.test.find_byid(calc_number_8) is None: self.Case.fail("未找到‘8’按钮") if self.test.find_byid(calc_number_9) is None: self.Case.fail("未找到‘9’按钮") if self.test.find_byid(calc_eq) is None: self.Case.fail("未找到‘=’按钮") if self.test.find_byid(calc_number_0) is None: self.Case.fail("未找到‘0’按钮") if self.test.find_byid(calc_dec_point) is None: self.Case.fail("未找到点按钮") if self.test.find_byid(calc_del) is None: self.Case.fail("未找到删除按钮") if self.test.find_byid(calc_op_div) is None: self.Case.fail("未找到‘÷’按钮") if self.test.find_byid(calc_op_mul) is None: self.Case.fail("未找到’ב按钮") if self.test.find_byid(calc_op_sub) is None: self.Case.fail("未找到“-”按钮") if self.test.find_byid(calc_op_add) is None: self.Case.fail("未找到“+”按钮") self.test.swipe_Left(600, 1) time.sleep(1) if self.test.find_byid(calc_advanced_INV) is None: self.Case.fail("未找到“INV”按钮") if self.test.find_byid(calc_advanced_DEG) is None: self.Case.fail("未找到“DEG”按钮") if self.test.find_byid(calc_advanced_pct) is None: self.Case.fail("未找到“%”按钮") if self.test.find_byid(calc_advanced_sin) is None: self.Case.fail("未找到“sin”按钮") if self.test.find_byid(calc_advanced_cos) is None: self.Case.fail("未找到“cos”按钮") if self.test.find_byid(calc_advanced_tan) is None: self.Case.fail("未找到“tan”按钮") if self.test.find_byid(calc_advanced_ln) is None: self.Case.fail("未找到“ln”按钮") if self.test.find_byid(calc_advanced_log) is None: self.Case.fail("未找到“log”按钮") if self.test.find_byid(calc_advanced_fact) is None: self.Case.fail("未找到“!”按钮") if self.test.find_byid(calc_advanced_pi) is None: self.Case.fail("未找到“π”按钮") if self.test.find_byid(calc_advanced_e) is None: self.Case.fail("未找到“e”按钮") if self.test.find_byid(calc_advanced_pow) is None: self.Case.fail("未找到“^”按钮") def case_calc_basic_button_check(self): self.case_if_base() for i in range(10): self.test.find_byid(f'{calc_number_test}{i}').click() time.sleep(1) result = self.test.find_byid(calc_show_formula).text if f'{i}' not in result: self.Case.fail(f"按钮‘{i}’功能未生效") else: self.test.find_byid(calc_del).click() time.sleep(1) self.test.find_byid(calc_dec_point).click() time.sleep(1) result = self.test.find_byid(calc_show_formula).text if '.' not in result: self.Case.fail("按钮‘.’功能未生效") else: self.test.find_byid(calc_del).click() time.sleep(1) self.test.find_byid(calc_number_0).click() time.sleep(1) result = self.test.find_byid(calc_show_formula).text if '0' in result: self.test.find_byid(calc_op_div).click() time.sleep(1) result = self.test.find_byid(calc_show_formula).text if '÷' not in result: self.Case.fail("按钮‘÷’功能未生效") else: self.test.find_byid(calc_del).click() time.sleep(1) self.test.find_byid(calc_op_mul).click() time.sleep(1) result = self.test.find_byid(calc_show_formula).text if '×' not in result: self.Case.fail("按钮‘×’功能未生效") else: self.test.find_byid(calc_del).click() time.sleep(1) self.test.find_byid(calc_op_sub).click() time.sleep(1) result = self.test.find_byid(calc_show_formula).text if '−' not in result: self.Case.fail("按钮‘-’功能未生效") else: self.test.find_byid(calc_del).click() time.sleep(1) self.test.find_byid(calc_op_add).click() time.sleep(1) result = self.test.find_byid(calc_show_formula).text if '+' not in result: self.Case.fail("按钮‘+’功能未生效") else: self.test.find_byid(calc_del).click() time.sleep(1) self.test.find_byid(calc_eq).click() time.sleep(1) result = self.test.find_byid(calc_show_result).text if '0' in result: more_list = self.test.find_list_byclass(ImageButton) for more in more_list: str_tmp = more.get_attribute('content-desc') if '更多选项' in str_tmp: more.click() time.sleep(1) break text_button_list = self.test.find_list_byclass(TextView) for t in text_button_list: str_tmp = t.text if '在结果中显示前导数' in str_tmp: t.click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) for text in text_list: str_tmp = text.text if '0 (精确)' not in str_tmp: self.Case.fail("结果显示错误") else: self.test.find_byclass(Button, '关闭').click() time.sleep(1) break break more_list = self.test.find_list_byclass(ImageButton) for more in more_list: str_tmp = more.get_attribute('content-desc') if '更多选项' in str_tmp: more.click() time.sleep(1) break text_button_list = self.test.find_list_byclass(TextView) for t in text_button_list: str_tmp = t.text if '以分数形式显示结果' in str_tmp: t.click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) for text in text_list: str_tmp = text.text if '0' not in str_tmp: self.Case.fail("结果显示错误") else: self.test.find_byclass(Button, '关闭').click() time.sleep(1) break break def case_clac_advance_button_check(self): self.case_if_base() self.test.swipe_Left(600, 1) time.sleep(1) INV = self.test.find_byid(calc_advanced_INV) INV.click() time.sleep(1) btext_list = self.test.find_list_byclass(Button) b_flag = True for btext in btext_list: str_tmp = btext.text if f'sin⁻¹' == f'sin' and f'sin' in str_tmp: self.Case.fail("未出现sin⁻¹按钮") b_flag = False continue if f'cos⁻¹' == f'cos' and f'cos' in str_tmp: self.Case.fail("未出现cos⁻¹按钮") b_flag = False continue if f'tan⁻¹' == f'tan' and f'tan' in str_tmp: self.Case.fail("未出现tan⁻¹按钮") b_flag = False continue if f'eˣ' == f'ln' and f'ln' in str_tmp: self.Case.fail("未出现eˣ按钮") b_flag = False continue if f'10ˣ' == f'log' and f'log' in str_tmp: self.Case.fail("未出现10ˣ按钮") b_flag = False continue if f'x²' == f'√' and f'√' in str_tmp: self.Case.fail("未出现x²按钮") b_flag = False break if not b_flag: self.Case.fail("INV 功能不完整") self.test.find_byid(calc_advanced_DEG).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) t_flag = False for t in text_list: str_tmp = t.text if 'DEG' in str_tmp: t_flag = True break if not t_flag: self.Case.fail("DEG 角度切换失败") self.test.find_byid(calc_advanced_DEG).click() time.sleep(1) self.test.find_byid(calc_advanced_pct).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if '%' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("% 功能失效") self.test.find_byid(calc_advanced_arcsin).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if 'sin⁻¹(' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("sin⁻¹按钮失效") self.test.find_byid(calc_advanced_arccos).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if 'cos⁻¹(' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("cos⁻¹按钮失效") self.test.find_byid(calc_advanced_arctan).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if 'tan⁻¹(' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("tan⁻¹按钮失败") self.test.find_byid(calc_advanced_exp).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if 'exp(' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("eˣ按钮失效") self.test.find_byid(calc_advacnced_tPow).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if '10^' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("10ˣ按钮失效") self.test.find_byid(calc_advanced_fact).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if '!' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("!按钮失效") self.test.find_byid(calc_advanced_pi).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if 'π' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("π按钮失效") self.test.find_byid(calc_advanced_e).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if 'e' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("e按钮失效") self.test.find_byid(calc_advanced_pow).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if '^' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("^按钮失效") self.test.find_byid(calc_advanced_lparen).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if '^(' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("(按钮失效") self.test.find_byid(calc_advanced_rparen).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if ')' in str_tmp: text_flag = True break if not text_flag: self.Case.fail(")按钮失效") self.test.find_byid(calc_advanced_sqr).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if ')²' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("x²按钮失效") self.test.find_byid(calc_advanced_INV).click() time.sleep(1) self.test.find_byid(calc_advanced_sin).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if 'sin(' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("sin按钮失效") self.test.find_byid(calc_advanced_cos).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if 'cos(' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("cos按钮失效") self.test.find_byid(calc_advanced_tan).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if 'tan(' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("tan按钮失效") self.test.find_byid(calc_advanced_ln).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if 'ln(' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("ln按钮失效") self.test.find_byid(calc_advanced_log).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if 'log(' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("log按钮失效") self.test.find_byid(calc_advanced_sqrt).click() time.sleep(1) text_list = self.test.find_list_byclass(TextView) text_flag = False for text in text_list: str_tmp = text.text if '√' in str_tmp: text_flag = True break if not text_flag: self.Case.fail("√按钮失效")
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 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): """检查是否可以正常启动""" try: self.driver.activate_app(phone_pkg) except: self.test.start_activity(phone_pkg,phone_main_activity) self.Case.assertTrue(self.test.wait_if_activity(phone_main_activity), '启动电话失败,超时5秒未检测到主界面') time.sleep(1) def case_get_imei_mdid(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.driver.activate_app(phone_pkg) self.Case.assertTrue(self.test.wait_if_activity(phone_main_activity), '等待5秒未检测到电话主界面') self.test.find_byid(phone_to_keypad).click() time.sleep(1) self.Case.assertIsNotNone(self.test.find_byid(phone_keypad_view),'拨号盘未显示') self.test.find_byid(phone_num_star).click() self.test.find_byid(phone_num_pound).click() self.test.find_byid(phone_num_0).click() self.test.find_byid(phone_num_6).click() self.test.find_byid(phone_num_pound).click() time.sleep(1) self.Case.assertTrue(('IMEI' in self.test.find_byid(phone_IMEI_Title).text),'IMEI 提示框 未显示') list_imei = self.test.find_byid_list(phone_imei_show) self.Case.assertIsNotNone(list_imei, 'IMEI号不存在') if len(list_imei) < 2: self.Case.fail('IMEI号不存在') for y in list_imei: str = y.text if len(str) == 15: try: int(str) except ValueError: self.Case.fail(f'IMEI号显示错误,非数字 (如果是MEID可能含有字母,并非bug): {str}') elif len(str) > 5: pass else: self.Case.fail(f'IMEI号显示错误 :长度为 0 : {str}') def case_call(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() self.test.find_byid(phone_to_keypad).click() time.sleep(1) self.Case.assertIsNotNone(self.test.find_byid(phone_keypad_view), '拨号盘未显示') num = devices_Config['operators'] if 10086 == num: self.test.find_byid(phone_num_1).click() self.test.find_byid(phone_num_0).click() self.test.find_byid(phone_num_0).click() self.test.find_byid(phone_num_8).click() self.test.find_byid(phone_num_6).click() elif 10010 == num: self.test.find_byid(phone_num_1).click() self.test.find_byid(phone_num_0).click() self.test.find_byid(phone_num_0).click() self.test.find_byid(phone_num_1).click() self.test.find_byid(phone_num_0).click() else: self.test.find_byid(phone_num_1).click() self.test.find_byid(phone_num_0).click() self.test.find_byid(phone_num_0).click() self.test.find_byid(phone_num_0).click() self.test.find_byid(phone_num_0).click() tmp_num = self.test.find_byid(phone_number_view).text tmp_num = int(re.sub(r' ','',tmp_num)) if tmp_num != num: self.Case.fail(f'输入号码显示不正确,输入为:{num},显示为:{tmp_num}') self.test.find_byid(phone_dialpad_button).click() for x in range(20): tmp_time = self.test.find_byid(phone_call_time_view) if tmp_time is not None: break time.sleep(1) time.sleep(3) self.test.find_byid(phone_call_end).click() time.sleep(2) self.Case.assertIsNone(self.test.find_byid(phone_call_time_view),'通话未挂断') self.driver.press_keycode(3, 0, 0) def case_call_112(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() self.test.find_byid(phone_to_keypad).click() time.sleep(1) self.Case.assertIsNotNone(self.test.find_byid(phone_keypad_view), '拨号盘未显示') self.test.find_byid(phone_num_1).click() self.test.find_byid(phone_num_1).click() self.test.find_byid(phone_num_2).click() tmp_num = self.test.find_byid(phone_number_view).text tmp_num = int(re.sub(r' ','',tmp_num)) if tmp_num != 112: self.Case.fail(f'输入号码显示不正确,输入为:{num},显示为:{tmp_num}') self.test.find_byid(phone_dialpad_button).click() for x in range(20): tmp_time = self.test.find_byid(phone_call_time_view) if tmp_time is not None: break time.sleep(1) time.sleep(3) self.test.find_byid(phone_call_end).click() time.sleep(2) self.Case.assertIsNone(self.test.find_byid(phone_call_time_view),'通话未挂断') self.driver.press_keycode(3, 0, 0) def case_ergodic_phone_view(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() tmp_list = self.test.find_byid_list(phone_bottom_Button) tmp_int = 0 for x in tmp_list: tmp_text = x.text if '快速拨号' in tmp_text: x.click() tmp_int += 1 if '通话记录' in tmp_text: x.click() tmp_int += 1 if '联系人' in tmp_text: x.click() tmp_int += 1 time.sleep(0.5) if tmp_int != 3: self.Case.fail("遍历 电话 界面失败,需要包含 :快速拨号 通话记录 联系人") def case_send_msg(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() self.test.find_byid(phone_to_keypad).click() time.sleep(1) self.Case.assertIsNotNone(self.test.find_byid(phone_keypad_view), '拨号盘未显示') test_number = self._random_number(times=5) self.test.find_list_byid(phone_search_action,'发送短信').click() self.Case.assertTrue(self.test.wait_if_activity(msg_edit_activity),'通过电话界面发送短信失败,未进入短信编辑界面') time.sleep(1) tmp_text = self.test.find_byid(msg_phone_edi).text tmp_text = re.sub(" ","",tmp_text) if test_number not in tmp_text: self.Case.fail(f"电话号码不匹配,拨号盘{test_number},短信界面{tmp_text}") def case_new_Contacts(self): if TestResult.getTestFail(self.failkey): self.skipTest('case_base test fail, skip this') self.case_if_base() self.test.find_byid(phone_to_keypad).click() time.sleep(1) self.Case.assertIsNotNone(self.test.find_byid(phone_keypad_view), '拨号盘未显示') test_number = self._random_number(times=5) self.test.find_list_byid(phone_search_action,'新建联系人').click() if self.test.find_list_byid(contacts_id_text,'联系人备份到') is not None: #取消备份到谷歌 self.test.find_byid(contacts_left_button).click() time.sleep(1) if not self.test.wait_if_activity(contacts_new_contacts_activity): self.Case.fail('未检测到新建联系人界面') time.sleep(1) tmp_text = self.test.find_byclass(Edit_Text,test_number[0:2]).text tmp_text = re.sub(" ","",tmp_text) if test_number not in tmp_text: self.Case.fail(f"电话号码不匹配,拨号盘{test_number},新建联系人{tmp_text}") def _random_number(self,times=11): int_tmp = '' for x in range(times): int_tmp_x = random.randint(0,9) if int_tmp_x == 0: self.test.find_byid(phone_num_0).click() int_tmp = f'{int_tmp}{0}' elif int_tmp_x == 1: self.test.find_byid(phone_num_1).click() int_tmp = f'{int_tmp}{1}' elif int_tmp_x == 2: self.test.find_byid(phone_num_2).click() int_tmp = f'{int_tmp}{2}' elif int_tmp_x == 3: self.test.find_byid(phone_num_3).click() int_tmp = f'{int_tmp}{3}' elif int_tmp_x == 4: self.test.find_byid(phone_num_4).click() int_tmp = f'{int_tmp}{4}' elif int_tmp_x == 5: self.test.find_byid(phone_num_5).click() int_tmp = f'{int_tmp}{5}' elif int_tmp_x == 6: self.test.find_byid(phone_num_6).click() int_tmp = f'{int_tmp}{6}' elif int_tmp_x == 7: self.test.find_byid(phone_num_7).click() int_tmp = f'{int_tmp}{7}' elif int_tmp_x == 8: self.test.find_byid(phone_num_8).click() int_tmp = f'{int_tmp}{8}' else: self.test.find_byid(phone_num_9).click() int_tmp = f'{int_tmp}{9}' time.sleep(0.3) return int_tmp
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