def music_play_page_test_04(self): tmp = self.music_play_page_progress_bar_display() if tmp == 0: log_utils.P_PASS('测试通过,在播放的情况下拖动进度条成功') elif tmp == 1: log_utils.F_FAIL('测试失败,原因:进入今日推荐页失败') elif tmp == 2: log_utils.F_FAIL('测试失败,原因:进入歌曲播放页失败')
def music_play_page_test_05(self): tmp = self.music_play_page_progress_bar_pause_displayed() if tmp == 0: log_utils.P_PASS('测试通过,在暂停的情况下拖动进度条成功,且拖动完进度条歌曲开始播放') elif tmp == 1: log_utils.F_FAIL('测试失败,原因:进入今日推荐页失败') elif tmp == 2: log_utils.F_FAIL('测试失败,原因:进入歌曲播放页失败')
def song_list_test01(self): tmp = self.song_list_play_test() if tmp == 0: log_utils.P_PASS('测试完成,榜单的各项播放功能正常!测试通过') elif tmp == 1: log_utils.F_FAIL('测试失败,榜单的播放功能有问题!') elif tmp == 2: log_utils.F_FAIL('测试失败,原因:等待某控件失败') elif tmp == 3: log_utils.F_FAIL('测试失败,原因:获取某歌曲名失败') elif tmp == 4: log_utils.F_FAIL('测试失败,原因:从api获取歌曲名失败')
def music_play_page_test_02(self): """测试点击专辑图会不会进入歌词页,点击歌词按钮会不会进入歌词页""" tmp = self.music_play_page_album_test() if tmp == 0: log_utils.P_PASS('测试通过,点击专辑图不会进入歌词页,点击歌词按钮进入歌词页') elif tmp == 1: log_utils.F_FAIL('测试失败,原因:进入歌单页面失败') elif tmp == 2: log_utils.F_FAIL('测试失败,原因:进入歌曲播放页失败') elif tmp == 3: log_utils.F_FAIL('测试失败,原因:点击专辑图进入了歌词页面(不应该进入)') elif tmp == 4: log_utils.F_FAIL('测试失败,原因:点击了歌词按钮没有进入歌词页面')
def music_play_page_test_01(self): """测试歌曲播放页的UI展示""" tmp = self.music_play_page_UI_test() if tmp == 0: log_utils.P_PASS( '测试通过,UI展示:歌曲播放页的各项展示功能,依次是专辑图、返回按钮、播放次数、当前播放时间、总时长、歌曲名、歌手名、歌词按钮、\ 缓存按钮、喜欢按钮、分享按钮、更多按钮、播放模式按钮、上一曲按钮、播放暂停按钮、下一曲按钮、播放列表按钮、相关明星、相似歌曲、推荐歌单、精彩热评。') elif tmp == 1: log_utils.F_FAIL('测试失败,原因:进入歌单页面失败') elif tmp == 2: log_utils.F_FAIL('测试失败,原因:进入歌曲播放页失败') elif tmp == 3: log_utils.F_FAIL('测试失败,原因:某控件显示错误')
def play_list_test01(self): tmp = self.play_list_play_test() if tmp == 0: log_utils.P_PASS( '测试通过,歌单页面的播放功能完好,包括歌单封面的播放按钮,点击歌曲条目进行播放,点击歌单页面的播放全部按钮来播放。') elif tmp == 1: log_utils.F_FAIL('测试失败,原因:等待某控件超时!') elif tmp == 2: log_utils.F_FAIL('测试失败,原因:某播放功能损坏!') elif tmp == 3: log_utils.F_FAIL('测试失败,原因:获取某文本失败!') elif tmp == 4: log_utils.F_FAIL('测试失败,原因:从api获取歌曲名信息失败')
def click_signout_button_first(self): """功能: 点击退出按钮,退出按钮在页面底部,所以要先将页面滑到底部再点击。之后再弹出的底部栏,点击退出登录""" if not self.find_element_and_action(By.ID, self.signout_button_id, self.action.click, '退出按钮') == 0: log_utils.F_FAIL('点击退出按钮失败') return 1
def click_signout_button_second(self): """功能: 点击弹出栏的退出按钮""" if not self.find_element_and_action(By.XPATH, self.logout_layout_xpath, self.action.click, '退出登录按钮') == 0: log_utils.F_FAIL('点击退出按钮失败') return 1
def sign_out(self): """功能: 登出的主过程:点击更多按钮--检查登录态--点击设置按钮--上划--点击退出--点击确认退出 返回值: 0:当前还在登录态,登出失败 1:当前不在登录态,登出成功 2:等待某控件超时,测试失败""" log_utils.C_INFO('开始登出') if self.wait_element_by_mode(base_data.wait_time_long,By.ID,self.more_button_id,'更多按钮') == 1: return 2 self.click_more_button() if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,self.setting_container_id,'更多菜单') == 1: return 2 log_utils.C_STEP('检查登录态') if self.check_is_login_in_more_page() == 0: log_utils.F_ERROR('没有在登陆态,先去退出登录') self.reset_app() if self.login_test() == 0: log_utils.F_ERROR('登录功能已经失效!无法继续测试!') self.tear_down() sys.exit(-1) else: log_utils.C_INFO('登录成功,继续测试!') self.reset_app() log_utils.C_INFO('开始登出') if self.wait_element_by_mode(base_data.wait_time_long,By.ID,self.more_button_id,'更多按钮') == 1: return 2 self.click_more_button() if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,self.setting_container_id,'更多菜单') == 1: return 2 self.click_setting_container() self.my_sleep(3) log_utils.C_STEP('上划屏幕') self.my_swipe('up') self.screenshot('设置页面截图') self.click_signout_button_first() self.my_sleep() self.click_signout_button_second() self.my_sleep() self.click_yes_button() if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,self.more_button_id,'回到主页') == 1: return 2 log_utils.C_STEP('验证是否登出成功,点击更多按钮') self.click_more_button() self.screenshot('登录状态截图') if self.check_is_login_in_more_page() == 1: log_utils.F_FAIL('在登录态,登出失败') return 0 else: log_utils.P_PASS('不在登录态,登出成功') return 1
def login_test02(self): """功能: 太合登录,异常情况,输入错误的密码 注意: 假如输入密码错误次数到3次时,会开始弹出验证码,导致无法继续测试。""" log_utils.C_INFO('开始测试登录的异常情况,输入错误的密码') self.after_login() if self.taihe_login(2) == 0: log_utils.P_PASS('登录失败!测试通过!') return 1 else: log_utils.F_FAIL('异常情况!测试失败!')
def login_test01(self): """功能: 太合登录,正常情况,输入正确的账号密码 返回值: 1:登录成功 0:登录失败""" log_utils.C_INFO('开始测试登录功能') self.after_login() if self.taihe_login(1) == 1: log_utils.P_PASS('登录成功!测试通过') return 1 else: log_utils.F_FAIL('登录失败!测试失败') return 0
def music_play_page_test_03(self): """测试点击各个入口(今日推荐、歌单、榜单、最近播放)能否正常进入歌曲播放页""" tmp = self.click_entrance_can_go_to_music_play_page_test() if tmp == 0: log_utils.P_PASS('测试通过,点击各个入口(今日推荐、歌单、榜单、最近播放)可以正常进入歌曲播放页') elif tmp == 1: log_utils.F_FAIL('测试失败,原因:进入今日推荐页超时') elif tmp == 2: log_utils.F_FAIL('测试失败,原因:进入歌曲播放页失败') elif tmp == 3: log_utils.F_FAIL('测试失败,原因:进入歌单页超时') elif tmp == 4: log_utils.F_FAIL('测试失败,原因:进入第一个歌单页面超时') elif tmp == 5: log_utils.F_FAIL('测试失败,原因:进入榜单页面超时') elif tmp == 6: log_utils.F_FAIL('测试失败,原因:进入第一个榜单页面超时') elif tmp == 7: log_utils.F_FAIL('测试失败,原因:进入我的页面超时') elif tmp == 8: log_utils.F_FAIL('测试失败,原因:进入最近播放页超时')
def login_test(self): """功能: 太合登录,正常情况,输入正确的账号密码 返回值: 1:登录成功 0:登录失败""" log_utils.C_INFO('开始测试登录功能') self.after_login() tmp = self.taihe_login(1) if tmp == 1: log_utils.P_PASS('登录成功!测试通过') return 1 elif tmp == 0: log_utils.F_FAIL('登录失败!测试失败') return 0 else: log_utils.F_ERROR('等待超时!测试失败') return 0
def play_list_test02(self): tmp = self.play_list_more_test() if tmp == 0: log_utils.P_PASS( '测试通过,歌单页面的歌曲条目的更多按钮中各项功能完好。包括下一首,喜欢,添加到,缓存,分享,mv按钮的点击弹出对应下边栏,喜欢能否真正收藏的功能。' ) elif tmp == 1: log_utils.F_FAIL('测试失败,原因:从api获取的歌单名与从页面提取的歌单名不一致') elif tmp == 2: log_utils.F_FAIL('测试失败,原因:从api获取的歌名与正在播放的歌曲名不一致,更多--下一首播放按钮功能损坏') elif tmp == 3: log_utils.F_FAIL('测试失败,原因:从api获取数据失败') elif tmp == 4: log_utils.F_FAIL('测试失败,原因:某控件不存在') elif tmp == 5: log_utils.F_FAIL('测试失败,原因:歌曲没有mv,这个点无法测试') elif tmp == 6: log_utils.F_FAIL('测试失败,原因:收藏不成功') elif tmp == 7: log_utils.F_FAIL('测试失败,原因:从界面获取歌单名失败') elif tmp == 8: log_utils.F_FAIL('测试失败,原因:进入歌单页面超时')
def play_list_test_03(self): tmp = self.play_list_top_button_test() if tmp == 0: log_utils.P_PASS( '测试通过,歌单页面上方的控件(分享、更多、批量缓存)功能完好,包括点击控件后有没有对应的边栏弹出,或会不会跳转到对应的页面' ) elif tmp == 1: log_utils.F_FAIL('测试失败,原因:进入歌单页面超时') elif tmp == 2: log_utils.F_FAIL('测试失败,原因:进入评论页面失败') elif tmp == 3: log_utils.F_FAIL('测试失败,原因:获取评论页的标题失败') elif tmp == 4: log_utils.F_FAIL('测试失败,原因:等待举报栏失败') elif tmp == 5: log_utils.F_FAIL('测试失败,原因:等待分享栏失败') elif tmp == 6: log_utils.F_FAIL('测试失败,原因:进入批量缓存页失败')
def play_list_play_test(self): """功能: 验证歌单页面相关的播放功能,歌单封面的播放按钮、歌单内部的播放全部按钮,点击歌曲进行播放 步骤: 1.进入APP,点击歌单按钮,进入歌单页面,获取第一个歌单的名称 2.点击第一个歌单页面封面的播放按钮 3.进入了歌曲播放页,验证是否正在播放,记录下正在播放的歌曲名称 4.点击歌曲播放页的返回按钮,返回歌单页面,点击第一个歌单的封面进入第一个歌单页面,通过api获取前三首歌曲的歌曲名,跟页面上的歌曲名进行对比 5.获取第一首歌曲的歌曲名,跟之前的歌曲名比较 6.获取第三首歌曲的歌曲名,点击第三首歌曲条目,比较歌曲名,查看是否在播放,点击返回 7.回到歌单页,点击播放全部按钮,比较第一首歌曲的歌曲名,查看是否在播放,点击返回 返回值: 0:测试通过 1:等待某控件超时 2:测试失败不通过 3:获取某文本失败 4:从api获取歌曲名失败""" flag = 0 log_utils.C_INFO('开始测试歌单页面相关的播放功能') self.click_play_list_button() if self.wait_element_by_mode(base_data.wait_time_mid, By.ID, self.play_list_page_newest_button_id, '进入歌单页面') == 1: return 1 first_play_list_name = self.get_play_list_page_first_play_list_name() if first_play_list_name == 1 or first_play_list_name == 2: log_utils.F_ERROR('获取歌单名失败,无法继续测试') return 3 log_utils.C_STEP('第一个歌单名为:' + first_play_list_name) self.click_play_list_page_first_play_list_play_button() self.wait_element_by_mode(base_data.wait_time_mid, By.ID, self.music_play_page_song_name_text_id, '进入歌曲播放页') if self.is_music_play_page_playing_song() == 1: log_utils.F_ERROR('歌单封面的播放按钮损坏!') flag = 1 playing_song_name = self.get_music_play_page_playing_song_name() if playing_song_name == 1 or playing_song_name == 2: log_utils.F_ERROR('获取歌曲名失败,无法继续测试') return 3 self.click_music_play_page_back_button() self.my_sleep(2) self.click_play_list_page_first_play_list() if self.wait_element_by_mode(base_data.wait_time_mid, By.ID, self.play_list_page_play_all_button_id, '进入第一个歌单页') == 1: return 1 tmp = self.get_play_list_page_first_play_list_name() log_utils.C_STEP('当前页面的歌单名为:' + tmp) if tmp == first_play_list_name: log_utils.C_INFO('两歌单名相同,进入对应的歌单页面成功') else: log_utils.F_ERROR('两歌单名不相同,页面不对应') return 1 first_song_name = self.get_play_list_page_first_song_name() second_song_name = self.get_play_list_page_second_song_name() third_song_name = self.get_play_list_page_third_song_name() if first_song_name == 1 or first_song_name == 2 or third_song_name == 1 or third_song_name == 2 or second_song_name == 1 or second_song_name == 2: log_utils.F_ERROR('获取歌曲名失败,无法继续测试') return 3 log_utils.C_INFO('第一首歌曲名为:' + first_song_name) log_utils.C_INFO('第二首歌曲名为:' + second_song_name) log_utils.C_INFO('第三首歌曲名为:' + third_song_name) log_utils.C_STEP('开始从api获取当前歌单的前三首歌曲') song_name_list = api_utils.get_first_play_list_first_song_name( 3) #从api获取前三首歌曲名 if not song_name_list == 1: if first_song_name == song_name_list[ 0] and second_song_name == song_name_list[ 1] and third_song_name == song_name_list[2]: log_utils.C_INFO('从页面上获取的前三首歌曲名信息于从api获取的前三首歌曲名相同') else: log_utils.F_ERROR('从页面上获取的前三首歌曲名信息于从api获取的前三首歌曲名不相同,请检查相关功能') flag = 2 if playing_song_name == first_song_name: log_utils.P_PASS('播放歌曲名与第一首歌曲名相同,歌单封面上的播放按钮功能完好') self.click_play_list_page_third_song_to_play() self.wait_element_by_mode(base_data.wait_time_mid, By.ID, self.music_play_page_song_name_text_id, '进入歌曲播放页') self.is_music_play_page_playing_song() tmp = self.get_music_play_page_playing_song_name() log_utils.C_INFO('正在播放的歌曲名为:' + tmp) if tmp == third_song_name: log_utils.P_PASS('正在播放歌曲与第三首歌曲的歌曲名相同,点击歌曲条目来播放歌曲的功能完好') else: log_utils.F_FAIL('正在播放歌曲与第三首歌曲的歌曲名不相同,点击歌曲条目来播放歌曲的功能损坏') flag = 1 self.click_music_play_page_back_button() self.my_sleep(2) self.click_play_list_page_play_all_button() self.wait_element_by_mode(base_data.wait_time_mid, By.ID, self.music_play_page_song_name_text_id, '进入歌曲播放页') self.is_music_play_page_playing_song() tmp = self.get_music_play_page_playing_song_name() log_utils.C_INFO('正在播放的歌曲名为:' + tmp) if tmp == first_song_name: log_utils.P_PASS('正在播放歌曲与第一首歌曲的歌曲名相同,点击播放全部按钮来播放歌曲的功能完好') else: log_utils.F_FAIL('正在播放歌曲与第一首歌曲的歌曲名不相同,点击播放全部按钮来播放歌曲的功能损坏') flag = 1 if flag == 1: return 2 elif flag == 2: return 4 return 0
def click_cancel_button(self): """点击取消(此按钮在左边)""" if not self.find_element_and_action(By.ID, self.cancel_button_id, self.action.click, '取消按钮') == 0: log_utils.F_FAIL('点击取消按钮失败') return 1
def click_yes_button(self): """点击确定(此按钮一直在右边)""" if not self.find_element_and_action(By.ID, self.yes_button_id, self.action.click, '确定按钮') == 0: log_utils.F_FAIL('点击确定按钮失败') return 1
def song_list_play_test(self): """功能: 测试音乐-榜单页面的播放歌曲的功能,榜单页面的播放歌曲功能(有两个播放全部按钮和点击歌曲条目播放的功能) 步骤: 1.进入音乐--榜单页面 2.获取第一个榜单的第一首歌曲的歌曲名 3.点击第一个榜单的播放全部按钮 4.在跳转到的歌曲播放页中验证正在播放的歌曲是否与第一首歌曲歌名一致 5.点击第一个榜单的‘>’按钮进入第一个榜单页面,通过api获取前三首歌曲的歌曲名,并且跟页面中提取的进行对比 6.获取第三首歌的歌名,并且点击第三首歌条目 7.在跳转到的歌曲播放页中验证正在播放的歌曲是否与第三首歌曲歌名一致 8.点击返回按钮返回榜单页面 9.获取第一首歌名,并且名点击全部播放按钮 10.在跳转到的歌曲播放页中验证正在播放的歌曲是否与第一首歌曲歌名一致 返回值: 4:从api获取某歌曲名失败 3:获取某歌曲名失败,测试失败 2:等待某控件超时,测试失败 1:测试失败 0:测试成功""" flag = 0 log_utils.C_INFO('开始测试音乐--榜单和榜单页面的播放功能') self.click_song_list_button() if self.wait_element_by_mode( base_data.wait_time_mid, By.XPATH, self.first_song_list_play_all_button_xpath, '进入榜单页面') == 1: return 2 tmp = self.get_frist_song_list_frist_song_name() #将获取到的整串信息分割开,提取到歌曲名 tmp_list = tmp.split(' ') first_song_name = tmp_list[1] if first_song_name == 1 or first_song_name == 2: log_utils.F_ERROR('获取歌曲名失败,无法继续测试') return 3 log_utils.C_STEP('第一个榜单的第一首歌曲名为:' + first_song_name) self.click_first_song_list_play_all_button() if self.wait_element_by_mode(base_data.wait_time_mid, By.ID, self.music_play_page_artist_name_text_id, '进入歌曲播放页') == 1: return 2 self.my_sleep(2) playing_song_name = self.get_music_play_page_playing_song_name() if playing_song_name == 1 or playing_song_name == 2: log_utils.F_ERROR('获取歌曲名失败,无法继续测试') return 3 log_utils.C_STEP('正在播放的歌曲名是:' + playing_song_name) self.is_music_play_page_playing_song() if first_song_name == playing_song_name: log_utils.P_PASS('两个歌曲名一致,播放第一首歌曲成功,音乐--榜单页面的全部播放按钮功能完好') else: log_utils.F_FAIL('两个歌曲名不一致,播放第一首歌曲失败,音乐--榜单页面的全部播放按钮功能损坏') flag = 1 self.click_music_play_page_back_button() self.my_sleep(3) self.click_first_song_list_enter_button() if self.wait_element_by_mode(base_data.wait_time_mid, By.ID, self.song_list_page_play_all_button_id, '进入第一个榜单的榜单页面') == 1: return 2 second_song_name = self.get_first_song_list_second_song_name() third_song_name = self.get_first_song_list_third_song_name() if third_song_name == 1 or third_song_name == 2 or second_song_name == 1 or second_song_name == 2: log_utils.F_ERROR('获取歌曲名失败,无法继续测试') return 3 log_utils.C_STEP('第一个榜单的第二首歌曲名为:' + second_song_name) log_utils.C_STEP('第一个榜单的第三首歌曲名为:' + third_song_name) log_utils.C_STEP('开始从api获取热歌榜的前三首歌曲的歌曲名') song_name_list = api_utils.get_new_song_list_first_song_name(3) if not song_name_list == 1: if first_song_name == song_name_list[ 0] and second_song_name == song_name_list[ 1] and third_song_name == song_name_list[2]: log_utils.C_INFO('从api获取的前三首歌曲名与从页面中提取的歌曲名一致') else: log_utils.F_ERROR('从api获取的前三首歌曲名与从页面中提取的歌曲名不一致,请检查相关功能') flag = 2 self.click_third_song_to_play_third_song() if self.wait_element_by_mode(base_data.wait_time_mid, By.ID, self.music_play_page_artist_name_text_id, '进入歌曲播放页') == 1: return 2 self.my_sleep(2) playing_song_name = self.get_music_play_page_playing_song_name() if playing_song_name == 1 or playing_song_name == 2: log_utils.F_ERROR('获取歌曲名失败,无法继续测试') return 3 log_utils.C_STEP('正在播放的歌曲名是: ' + playing_song_name) self.is_music_play_page_playing_song() if third_song_name == playing_song_name: log_utils.P_PASS('两个歌曲名一致,播放第三首歌曲成功,点击榜单页面的歌曲来播放功能完好') else: log_utils.F_FAIL('两个歌曲名不一致,播放第三首歌曲失败,点击榜单页面的歌曲来播放功能损坏') flag = 1 self.click_music_play_page_back_button() self.my_sleep(3) first_song_name = self.get_first_song_list_first_song_name() if first_song_name == 1 or first_song_name == 2: log_utils.F_ERROR('获取歌曲名失败,无法继续测试') return 3 log_utils.C_STEP('第一首歌曲的歌曲名为:' + first_song_name) self.click_song_list_play_all_button() if self.wait_element_by_mode(base_data.wait_time_mid, By.ID, self.music_play_page_artist_name_text_id, '进入歌曲播放页') == 1: return 2 self.my_sleep(2) playing_song_name = self.get_music_play_page_playing_song_name() if playing_song_name == 1 or playing_song_name == 2: log_utils.F_ERROR('获取歌曲名失败,无法继续测试') return 3 log_utils.C_STEP('正在播放的歌曲名是: ' + playing_song_name) self.is_music_play_page_playing_song() if first_song_name == playing_song_name: log_utils.P_PASS('两个歌曲名一致,播放第一首歌曲成功,点击榜单页面的播放全部按钮来播放功能完好') else: log_utils.F_FAIL('两个歌曲名不一致,播放第一首歌曲失败,点击榜单页面的播放全部按钮来播放功能损坏') flag = 1 if flag == 1: return 1 if flag == 2: return 4 return 0