def music_play_page_progress_bar_display(self): """播放进度条显示, 在歌曲名上方,贴在专辑图底边,显示播放时间和总播放时长,播放歌曲时进度条随着播放时间变化,左右拖动显示拖动的时间和总时间点""" flag = 0 log_utils.C_STEP('开始测试播放进度条拖动及显示') home_music_recommend_page.click_today_recommend_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,today_commend_page.today_commend_page_play_all_button_id,'进入今日推荐页')== 1: flag = 1 if not flag == 1: today_commend_page.click_today_commend_page_play_all_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,music_play_page.music_play_page_album_pic_id,'进入歌曲播放页') == 1: flag = 2 if not flag == 2: first_time = music_play_page.get_current_play_time(self) log_utils.C_INFO('当前播放时长为:'+first_time) log_utils.C_STEP('开始向右拖动进度条') size = self.get_size() x_coefficient = 800/size[0] y_coefficient = 1280/size[1] x1 = 100 * x_coefficient x2 = 500 * x_coefficient y = 800 * y_coefficient self.driver.swipe(x1,y,x2,y,3000) self.my_sleep() second_time = music_play_page.get_current_play_time(self) log_utils.C_INFO('当前播放时长为:'+second_time) if second_time > first_time: log_utils.C_INFO('进度条拖动成功')
def music_play_page_progress_bar_pause_displayed(self): """暂停时进度条的拖动显示""" flag = 0 log_utils.C_STEP('开始测试暂停进度条拖动及显示') home_music_recommend_page.click_today_recommend_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,today_commend_page.today_commend_page_play_all_button_id,'进入今日推荐页')== 1: flag = 1 if not flag == 1: today_commend_page.click_today_commend_page_play_all_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,music_play_page.music_play_page_album_pic_id,'进入歌曲播放页') == 1: flag = 2 if not flag == 2: first_time = music_play_page.get_current_play_time(self) log_utils.C_INFO('当前播放时长为:'+first_time) self.my_sleep(3) music_play_page.click_music_play_page_play_pause_button(self,'暂停按钮') self.my_sleep(2) log_utils.C_STEP('开始向右拖动进度条') size = self.get_size() x_coefficient = 800/size[0] y_coefficient = 1280/size[1] x1 = 100 * x_coefficient x2 = 500 * x_coefficient y = 800 * y_coefficient self.driver.swipe(x1,y,x2,y,3000) self.my_sleep() second_time = music_play_page.get_current_play_time(self) log_utils.C_INFO('当前播放时长为:'+second_time) if second_time > first_time: log_utils.C_INFO('进度条拖动成功') music_play_page.is_music_play_page_playing_song(self) return flag
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 find_element_and_action(self, mode, element='', action=None, thing='', keys=''): """功能: 在当前页面上以某种方式查找一个控件,并且对其进行某种操作 参数: mode:以哪种方式寻找控件,必须是以下几种:By.ID, By.CLASS_NAME, By.XPATH, By.NAME element:控件的id或者xpath等,要跟前一项对应, action:对查找元素进行的操作:“is_displayed”、“click”、“send_keys”、“get_text” keys:假如要进行send_keys的操作,就要发送一个keys thing:元素描述 返回值: 0:查找的控件显示\点击成功\输入成功 1:没有输入action参数,错误 2:查找不到要查找的控件,抛出异常 tmpstr:要获取的控件中文本信息 例子: """ try: element_info = self.driver.find_element(mode, element) if action == "is_displayed": element_info.is_displayed() log_utils.C_INFO(thing + '显示正常') return 0 elif action == "click": element_info.click() log_utils.C_STEP('点击' + thing + ' 点击成功') return 0 elif action == "send_keys": element_info.send_keys(keys) log_utils.C_STEP(thing + ' ' + action + ' ' + keys + ' 输入信息成功') return 0 elif action == "get_text": tmp = element_info.text log_utils.C_STEP('获取' + thing + '的文本信息成功') return tmp else: log_utils.F_ERROR(thing + action + ' error') return 1 except: log_utils.F_ERROR(thing + '不在当前页面') self.screenshot('错误截图:要查找控件不在当前页面') return 2
def check_is_login_in_more_page(self): """功能: 判断是否在登录态 返回值: 1:在登录态 0:没有在登录态""" log_utils.C_STEP('判断是否在登录态开始') if self.find_element_and_action(By.ID, self.user_name_text_id, self.action.is_displayed, '用户名') == 0: return 1 elif self.find_element_and_action(By.ID, self.go_login_button_id, self.action.is_displayed, '去登陆按钮') == 0: return 0
def taihe_login(self,mode): """功能: 验证太合登录的主过程:验证是否进入登录页--点击进入账号密码登录页--验证是否进入账号密码登录页--输入账号密码--验证登录态 参数: mode:1--输入正确的账号密码 2--输入错误的密码 3--输入错误的账号 返回值: 2:等待某控件超时测试失败 1:在登录态 0:不在登录态 注意: 太合登录有一个输入错误密码次数达到三次的时候就开始弹出验证码的策略,因此不可以连续多次输入错误的密码""" if self.wait_element_by_mode(base_data.wait_time_mid,By.XPATH,self.go_to_baidu_login_button_xpath,'进入登录页') == 1: return 2 self.go_to_account_login_page() if self.wait_element_by_mode(base_data.wait_time_mid,By.XPATH,self.account_login_log_xpath,'进入账号密码登录页') == 1: return 2 if mode == 1: self.input_account(account_data.TAIHE_PHONE_NUMBER) #输入账号密码,点击登录按钮,点击登录后会联网登录,返回首页 self.input_password(account_data.TAIHE_PASSWORD) self.screenshot('输入账号密码截图') self.click_login_button() elif mode == 2: self.input_account(account_data.TAIHE_PHONE_NUMBER) #输入账号密码,点击登录按钮,点击登录后会联网登录,返回首页 self.input_password('wrong_password') #输入错误的密码 self.screenshot('输入账号密码截图') self.click_login_button() log_utils.C_STEP('输入错误的密码,点击登录按钮') #验证错误密码的异常情况的方法是,睡眠几秒,观察是否停留在此页 self.screenshot('输入错误密码后截图') self.my_sleep(5) if self.find_element_and_action(By.XPATH,self.login_button_xpath,self.action.is_displayed,'账号密码登录页') == 0: return 0 else: return 1 if self.wait_element_by_mode(base_data.wait_time_long,By.ID,self.more_button_id,'回到首页') == 1: #验证登录态 return 2 self.click_more_button() self.my_sleep() self.screenshot('登录态截图') if self.check_is_login_in_more_page() == 1: log_utils.C_INFO('在登录态') return 1 else: log_utils.C_INFO('不在登录态') return 0
def play_list_top_button_test(self): """对歌单页面上方的控件进行测试,主要是点击后有没有对应的边栏弹出,和会不会跳转到对应的页面 返回值: 1:进入歌单页面超时 2:进入评论页面失败 3:获取评论页的标题失败 4:等待举报栏失败 5:等待分享栏失败 6:进入批量缓存页失败""" 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 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 log_utils.C_STEP('开始测试点击评论按钮能否跳转到评论页面') play_list_page.click_play_list_page_comment_button(self) if self.wait_element_by_mode( base_data.wait_time_mid, By.ID, comment_page.comment_page_title_bar_title_id, '进入评论页面') == 1: flag = 2 else: title = comment_page.get_comment_page_title_bar_title_text(self) if title == 1: flag = 3 else: log_utils.C_INFO('当前评论页面的标题为:' + title) comment_page.click_comment_page_title_bar_back_button(self) self.my_sleep(3) log_utils.C_STEP('开始测试点击页面上方更多按钮,是否会弹出举报栏') play_list_page.click_play_list_page_more_button(self) if self.wait_element_by_mode( base_data.wait_time_mid, By.ID, play_list_page. play_list_page_more_feedback_play_list_layout_id, '下方举报栏弹出') == 1: flag = 4 else: log_utils.C_INFO('举报栏出现,点击更多按钮功能有效') self.driver.press_keycode(4) self.my_sleep(3) log_utils.C_STEP('开始测试点击页面上方分享按钮,是否会弹出分享栏') play_list_page.click_play_list_page_share_button(self) if self.wait_element_by_mode( base_data.wait_time_mid, By.ID, play_list_page. play_list_page_more_button_share_button_weixin_share_button_id, '下方分享栏弹出') == 1: flag = 5 else: log_utils.C_INFO('分享栏出现,点击分享按钮有效') self.driver.press_keycode(4) self.my_sleep(3) log_utils.C_STEP('开始测试点击缓存按钮会不会跳转到缓存页') play_list_page.click_play_list_page_download_button(self) if self.wait_element_by_mode( base_data.wait_time_mid, By.ID, batch_download_page. batch_download_page_download_layout_button_id, '进入批量缓存页面') == 1: flag = 6 else: log_utils.C_INFO('进入批量缓存页,点击批量缓存按钮功能成功') return flag
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 play_list_more_test(self): """功能: 对歌单页面的更多按钮中的各项功能, 点击缓存按钮后能否弹出到缓存栏,点击喜欢能否收藏歌曲,点击分享是否能弹出分享栏,点击下一首会下一首播放,点击mv会跳转到mv播放页,点击添加到会弹出歌单栏进行测试 步骤: 1.点击进入最热歌单页面,跟从api获取的歌单名相对比 2.点击进入第一个歌单页面,点击播放第三首歌曲,点击返回到歌单页面 3.点击第一首歌的更多按钮,点击下一首播放按钮,点击minibar中的下一曲按钮,验证歌曲名来验证下一首播放按钮功能 4.点击第一首歌的更多按钮,点击喜欢按钮,从api验证是否喜欢成功,点击返回按钮 5.点击第一首歌的更多按钮,点击缓存按钮,检测是否弹出缓存栏,点击返回按钮 6.点击第一首歌的更多按钮,点击分享按钮,检测是否弹出分享栏,点击返回按钮 7.点击第一首歌的更多按钮,点击添加到按钮,检测是否弹出歌单栏,点击返回按钮 8.从api检测第一首歌是否有mv,假如有,点击第一首歌的更多按钮,点击mv按钮,等待是否能进入mv的播放页面 9.测试完毕,返回flag 返回值: 0:测试成功 1:从api获取的歌单名与从页面提取的歌单名不一致 2:从api获取的歌名与正在播放的歌曲名不一致,更多--下一首播放按钮功能损坏 3:从api获取数据失败 4:某控件不存在 5:歌曲没有mv,这个点无法测试 6:收藏不成功 7:从界面获取歌单名失败 8:进入歌单页面超时""" 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 8 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('从界面获取歌单名失败') flag = 7 log_utils.C_STEP('第一个歌单名为:' + first_play_list_name) log_utils.C_STEP('开始从api获取最热歌单的第一个歌单名') list_name = api_utils.get_first_play_list_name() log_utils.C_INFO('获取到的歌单名为:' + list_name) if not list_name == 1: if not list_name == first_play_list_name: log_utils.F_ERROR('从api获取的歌单名与从页面提取的歌单名不一致!') self.screenshot('从api获取的歌单名与从页面提取的歌单名不一致,从api获取的歌单名为:' + list_name) flag = 1 else: log_utils.C_INFO('从api获取的歌单名与从页面提取的歌单名一致') else: flag = 3 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 self.my_sleep(2) 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.click_music_play_page_back_button() self.my_sleep(3) self.click_play_list_page_first_song_more_button() #点击第一首歌曲的更多按钮 self.my_sleep(3) self.click_play_list_page_first_song_more_next_play_button() #点击下一首播放 self.my_sleep(2) self.click_play_list_page_minibar_next_song_button() self.my_sleep(2) playing_song_name = self.get_play_list_page_minibar_playing_song_name() log_utils.C_INFO('当前正在播放歌曲名为:' + playing_song_name) log_utils.C_STEP('从api获取歌曲名') song_name_list = api_utils.get_first_play_list_first_song_name(3) if not song_name_list == 1: log_utils.C_INFO('获取到的第一首歌曲名为:' + song_name_list[0]) if not playing_song_name == song_name_list[0]: log_utils.F_ERROR('从api获取的歌名与从页面提取的正在播放歌曲名不一致!') self.screenshot('从api获取的歌名与从页面提取的正在播放歌曲名不一致,从api获取的歌名为:' + song_name_list[0]) flag = 2 else: log_utils.C_INFO('从api获取的歌名与从页面提取的正在播放歌曲名一致,更多--下一首播放功能完好') else: flag = 3 log_utils.C_STEP('开始测试点击喜欢按钮能否喜欢') self.my_sleep(2) self.click_play_list_page_first_song_more_button() self.my_sleep() self.click_play_list_page_first_song_more_favorite_button() self.my_sleep(3) log_utils.C_STEP('开始从api获取用户收藏的信息') collect_song_name_list = api_utils.get_user_collect_song_list() if collect_song_name_list == 1: flag = 3 else: log_utils.C_INFO('从api获取的用户收藏的第一首歌名为:' + collect_song_name_list[0]) if collect_song_name_list[0] == song_name_list[0]: log_utils.C_INFO('用户收藏的第一首歌曲名与本歌单第一首歌曲名相同,收藏成功') else: log_utils.C_INFO('用户收藏的第一首歌曲名与本歌单第一首歌曲名不相同,收藏不成功') flag = 6 self.my_sleep(2) self.click_play_list_page_first_song_more_button() self.my_sleep() self.click_play_list_page_first_song_more_favorite_button() log_utils.C_STEP('开始检查点击缓存按钮能否弹出缓存栏') self.my_sleep(2) self.click_play_list_page_first_song_more_button() self.my_sleep() self.click_play_list_page_first_song_more_download_button() self.my_sleep(3) if self.is_more_button_download_button_download_button_display( ) == 1: #检测缓存栏是否弹出 flag = 4 log_utils.F_ERROR('缓存栏没有弹出') self.driver.press_keycode(4) #点击返回键 log_utils.C_STEP('开始测试点击分享按钮能否弹出分享栏') self.my_sleep(2) self.click_play_list_page_first_song_more_button() self.my_sleep(2) self.click_play_list_page_first_song_more_share_button() self.my_sleep(2) if self.is_more_button_share_button_lyric_poster_display( ) == 1: #检查分享栏是否弹出 flag = 4 log_utils.F_ERROR('分享栏没有弹出') self.driver.press_keycode(4) self.my_sleep(2) self.click_play_list_page_first_song_more_button() self.my_sleep(2) self.click_play_list_page_first_song_more_add_to_button() self.my_sleep(2) if self.is_more_button_add_to_button_play_list_display( ) == 1: #检测歌单栏是否弹出 flag = 4 log_utils.F_ERROR('歌单栏没有弹出') self.driver.press_keycode(4) self.my_sleep(2) log_utils.C_INFO('从api获取has_mv的信息来判断第一首歌曲是否有mv') has_mv_code = api_utils.get_first_play_list_first_song_have_mv( ) #先检查该歌曲是否有mv,假如有点击之后检测是否跳转到mv页面 if has_mv_code == '1': log_utils.C_STEP('第一首歌曲有mv,开始验证点击mv按钮能否跳转到mv页面') self.click_play_list_page_first_song_more_button() self.my_sleep(2) self.click_play_list_page_first_song_more_mv_button() self.wait_element_by_mode(base_data.wait_time_mid, By.ID, mv_page.mv_play_page.mv_play_box_id, '进入mv播放页') log_utils.F_ERROR('成功进入mv播放页') elif has_mv_code == '0': log_utils.F_ERROR('第一首歌曲没有mv,无法测试跳转到mv页面') flag = 5 else: flag = 3 return flag
def music_play_page_UI_test(self): """UI展示:歌曲播放页的各项展示功能,依次是专辑图、返回按钮、播放次数、当前播放时间、总时长、歌曲名、歌手名、歌词按钮、 缓存按钮、喜欢按钮、分享按钮、更多按钮、播放模式按钮、上一曲按钮、播放暂停按钮、下一曲按钮、播放列表按钮、 相关明星、相似歌曲、推荐歌单、精彩热评。 返回值: 0:测试通过 1:进入歌单页面失败 2:进入歌曲播放页失败 3:某控件显示错误""" home_music_play_list_page.click_play_list_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,self.play_list_page_newest_button_id,'进入歌单页面') == 1: return 1 home_music_play_list_page.click_play_list_page_first_play_list_play_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,music_play_page.music_play_page_album_pic_id,'进入歌曲播放页') == 1: return 2 log_utils.C_STEP('开始测试歌曲播放页的各项展示功能,依次是专辑图、返回按钮、播放次数、当前播放时间、总时长、歌曲名、歌手名、歌词按钮、\ 缓存按钮、喜欢按钮、分享按钮、更多按钮、播放模式按钮、上一曲按钮、播放暂停按钮、下一曲按钮、播放列表按钮、\ 相关明星、相似歌曲、推荐歌单、精彩热评。') value_list = {0: music_play_page.is_music_play_page_album_pic_displayed(self), 1: music_play_page.is_music_play_page_back_button_displayed(self), 2: music_play_page.is_music_play_page_play_count_displayed(self), 3: music_play_page.is_music_play_page_current_time_text_displayed(self), 4: music_play_page.is_music_play_page_total_time_text_displayed(self), 5: music_play_page.is_music_play_page_song_name_text_displayed(self), 6: music_play_page.is_music_play_page_artist_name_text_displayed(self), 7: music_play_page.is_music_play_page_lyric_button_displayed(self), 8: music_play_page.is_music_play_page_download_button_displayed(self), 9: music_play_page.is_music_play_page_fav_button_displayed(self), 10: music_play_page.is_music_play_page_share_button_displayed(self), 11: music_play_page.is_music_play_page_more_button_displayed(self), 12: music_play_page.is_music_play_page_play_mode_button_displayed(self), 13: music_play_page.is_music_play_page_prev_song_button_displayed(self), 14: music_play_page.is_music_play_page_music_play_pause_button_displayed(self), 15: music_play_page.is_music_play_page_next_song_button_displayed(self), 16: music_play_page.is_music_play_page_play_list_button_displayed(self)} self.my_sleep(2) self.screenshot('歌曲播放页UI显示截图') log_utils.C_STEP('滑动半个屏幕') self.my_swipe('up',1000) self.my_sleep(5) self.screenshot('歌曲播放页滑动半屏之后UI显示') value_list[17] = music_play_page.is_music_play_page_relative_star_title_displayed(self) value_list[18] = music_play_page.is_music_play_page_relative_song_title_displayed(self) log_utils.C_STEP('滑动半个屏幕') self.my_swipe('up',700) self.my_sleep(5) self.screenshot('歌曲播放页再次滑动半屏后UI显示') value_list[19] = music_play_page.is_music_play_page_recommend_play_list_title_displayed(self) value_list[20] = music_play_page.is_music_play_page_hot_comment_title_displayed(self) i = 0 while i < 21: if not value_list[i] == 0: return 3 i += 1 return 0
def click_entrance_can_go_to_music_play_page_test(self): """测试点击各个入口(今日推荐、歌单、榜单、最近播放)能否正常进入歌曲播放页 返回值: 0:测试通过 1:进入今日推荐页超时 2:进入歌曲播放页失败 3:进入歌单页超时 4:进入第一个歌单页面超时 5:进入榜单页面超时 6:进入第一个榜单页面超时 7:进入我的页面超时 8:进入最近播放页""" flag = 0 log_utils.C_STEP('开始测试今日推荐页中的播放全部按钮和点击歌曲能否跳转到歌曲播放页') home_music_recommend_page.click_today_recommend_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,today_commend_page.today_commend_page_play_all_button_id,'进入今日推荐页')== 1: flag = 1 if not flag == 1: today_commend_page.click_today_commend_page_play_all_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,music_play_page.music_play_page_album_pic_id,'进入歌曲播放页') == 1: flag = 2 music_play_page.click_music_play_page_back_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,today_commend_page.today_commend_page_play_all_button_id,'回到今日推荐页')== 1: flag = 1 self.my_sleep(3) today_commend_page.click_today_commend_page_second_song(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,music_play_page.music_play_page_album_pic_id,'进入歌曲播放页') == 1: flag = 2 music_play_page.click_music_play_page_back_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,today_commend_page.today_commend_page_play_all_button_id,'回到今日推荐页')== 1: flag = 1 self.driver.press_keycode(4) #回到首页 self.my_sleep(3) log_utils.C_STEP('开始测试点击歌单中歌曲能否播放歌曲') home_music_recommend_page.click_play_list_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,home_music_play_list_page.play_list_page_hottest_button_id,'进入歌单页') == 1: flag = 3 if not flag == 3: home_music_play_list_page.click_play_list_page_first_play_list(self) #进入第一个歌单 if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,play_list_page.play_list_page_play_list_name_id,'进入第一个歌单页') == 1: flag = 4 if not flag == 4: play_list_page.click_play_list_page_third_song_to_play(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,music_play_page.music_play_page_album_pic_id,'进入歌曲播放页') == 1: flag = 2 music_play_page.click_music_play_page_back_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,play_list_page.play_list_page_play_list_name_id,'回到第一个歌单页') == 1: flag = 4 self.driver.press_keycode(4) #回到歌单页 self.my_sleep(3) log_utils.C_STEP('开始测试点击榜单中歌曲能否播放歌曲') home_music_play_list_page.click_song_list_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.XPATH,home_music_song_list_page.first_song_list_play_all_button_xpath,'进入榜单页面') == 1: flag = 5 if not flag == 5: home_music_song_list_page.click_first_song_list_enter_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.XPATH,song_list_page.song_list_page_first_song_more_button_xpath,'进入第一个榜单页面') == 1: flag = 6 if not flag == 6: song_list_page.click_third_song_to_play_third_song(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,music_play_page.music_play_page_album_pic_id,'进入歌曲播放页') == 1: flag = 2 music_play_page.click_music_play_page_back_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.XPATH,song_list_page.song_list_page_first_song_more_button_xpath,'回到第一个榜单页') == 1: flag = 6 self.driver.press_keycode(4) #回到榜单页 self.my_sleep(3) log_utils.C_STEP('开始测试点击最近播放的歌曲能否播放歌曲') home_music_song_list_page.click_mine_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,home_mine_page.download_music_id,'进入我的页面') == 1: flag = 7 if not flag == 7: self.my_sleep(3) home_mine_page.click_play_history_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,play_history_page.play_history_page_song_text_id,'进入最近播放页') == 1: flag = 8 if not flag == 8: play_history_page.click_play_history_page_third_song_layout_to_play(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,music_play_page.music_play_page_album_pic_id,'进入歌曲播放页') == 1: flag = 2 music_play_page.click_music_play_page_back_button(self) if self.wait_element_by_mode(base_data.wait_time_mid,By.ID,play_history_page.play_history_page_song_text_id,'回到最近播放页') == 1: flag = 8 self.driver.press_keycode(4) #回到我的页 self.my_sleep(3) return flag
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