def block_009_play_focus_move(driver, i): """ 处理区遍历块推荐位时焦点的移动,9号区块 :param driver: :param i: 区块推荐位列表序列号,即区块的第几个推荐位 :return: """ if i == 0: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 1: # 下移1次 focusMove.move_direction(driver, 1, 20) logging.info('焦点下移1次') elif i == 2: # 上移1次 focusMove.move_direction(driver, 1, 19) logging.info('焦点上移1次') # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 3: # 下移1次 focusMove.move_direction(driver, 1, 20) logging.info('焦点下移1次') elif i == 4: logging.info('区块最后一个推荐位')
def block_008_005_025_play_focus_move(driver, i): """ 处理区遍历块推荐位时焦点的移动,8\5\25号区块 :param driver: :param i: 区块推荐位列表序列号,即区块的第几个推荐位 :return: """ if i == 0: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 1: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 2: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 3: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 4: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 5: logging.info('区块最后一个推荐位')
def block_032_play_focus_move(driver, i): ''' 32号区块为轮播区块无详情页 焦点从上边的区块下移时,有需要2次下移,有时需要1次下移,该区块不稳定也不符合进入详情页的需求 该区块需要在接口中过滤掉 ''' if i == 0: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 1: # 下移1次 focusMove.move_direction(driver, 1, 20) logging.info('焦点下移1次') elif i == 2: # 下移1次 focusMove.move_direction(driver, 1, 20) logging.info('焦点下移1次') elif i == 3: # 下移1次 focusMove.move_direction(driver, 1, 20) logging.info('焦点下移1次') elif i == 4: # 下移1次 focusMove.move_direction(driver, 1, 20) logging.info('焦点下移1次') elif i == 5: logging.info('最后一个推荐位,焦点需要移动到当前行的第一个位置')
def block_018_play_focus_move(driver, i): """ 处理区遍历块推荐位时焦点的移动,18号区块 :param driver: :param i: 区块推荐位列表序列号,即区块的第几个推荐位 ***恢复焦点时多下移一次** :return: """ # if i == 0: # # 下移1次 # focusMove.move_direction(driver, 1, 20) # logging.info('焦点下移1次') # elif i == 1: # # 上移1次 # focusMove.move_direction(driver, 1, 19) # logging.info('焦点上移1次') # # 右移1次 # focusMove.move_direction(driver, 1, 22) # logging.info('焦点右移1次') # elif i == 2: # # 下移1次 # focusMove.move_direction(driver, 1, 20) # logging.info('焦点下移1次') # elif i == 3: # # 上移1次 # focusMove.move_direction(driver, 1, 19) # logging.info('焦点上移1次') # # 右移1次 # focusMove.move_direction(driver, 1, 22) # logging.info('焦点右移1次') # elif i == 4: # logging.info('左后一个推荐位,焦点需要移动到当前行的第一个位置') if i == 0: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 1: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 2: # 下移1次 focusMove.move_direction(driver, 1, 20) logging.info('焦点下移1次') # 左移4次 focusMove.move_direction(driver, 4, 21) logging.info('焦点左移4次') elif i == 3: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 4: logging.info('区块最后一个推荐位')
def page_block_focus_move_init(driver, block_no_name): ''' :param driver ---驱动 :param block_no_name 区块名称--编号 初始化区块焦点 ''' if block_no_name == '011': pass else: focusMove.move_direction(driver, 4, 21)
def block_003_026_play_focus_move(driver, i): """ 处理区遍历块推荐位时焦点的移动,3\26号区块 :param driver: :param i: 区块推荐位列表序列号,即区块的第几个推荐位 :return: lqq """ if i in [0,1]: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 2: logging.info('区块最后一个推荐位')
def block_002_023_028_play_focus_move(driver, i): """ 处理区遍历块推荐位时焦点的移动,2\23\28号区块 :param driver: :param i: 区块推荐位列表序列号,即区块的第几个推荐位 :return: lqq """ if i == 0: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 1: logging.info('区块最后一个推荐位')
def block_012_play_focus_move(driver, i): """ 处理区遍历块推荐位时焦点的移动,12号区块 :param driver: :param i: 区块推荐位列表序列号,即区块的第几个推荐位 :return: """ # if i == 0: # # 下移1次 # focusMove.move_direction(driver, 1, 20) # logging.info('焦点下移1次') # elif i == 1: # # 右移1次 # focusMove.move_direction(driver, 1, 22) # logging.info('焦点右移1次') # elif i == 2: # # 上移1次 # focusMove.move_direction(driver, 1, 19) # logging.info('焦点上移1次') # elif i == 3: # # 下移1次 # focusMove.move_direction(driver, 1, 20) # logging.info('焦点下移1次') # elif i == 4: # logging.info('区块最后一个推荐位') if i == 0: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 1: # 下移1次 focusMove.move_direction(driver, 1, 20) logging.info('焦点下移1次') # 右移1次 focusMove.move_direction(driver, 2, 21) logging.info('焦点左移2次') elif i == 2: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 3: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 4: logging.info('区块最后一个推荐位')
def interface_block_no_content_travel(driver, block_no_content_list, block_recommend_no): """ 遍历接口与当前遍历推荐位对比 :param driver: :param block_no_content_list: 推荐位信息列表 :param block_recommend_no: 推荐位编号 :return: lqq """ # 遍历接口信息:需要测试的推荐位内容 # for content_dict_no in range(len(block_no_content_list)): # print(content_dict_no) #推荐位字典 # print(block_no_content_list[content_dict_no]) # 每一个推荐位内容为字典格式 # if block_recommend_no in block_no_content_list[content_dict_no].keys(): # content_num = str(content_dict_no+1) # 匹配上的推荐位的第几个 # print(content_num) # content_type = block_no_content_list[content_dict_no][block_recommend_no][0] # 推荐位的详情页类型 # content_name = block_no_content_list[content_dict_no][block_recommend_no][1] # 推荐位的详情页名称 # print('---------------点击推荐位进入详情页并返回-----------', content_type, content_name, content_num) # # # 调用用例方法,运行对应用例 # paramAndPlay.verify(driver, content_type, content_name) # block_no_content_list = [0] for content_no in block_no_content_list: print (content_no) if content_no == block_recommend_no: content_num = str(content_no+1) print(content_num) # print('---------------点击推荐位进入详情页并返回-----------', content_type, content_name, content_num) print('---------------点击推荐位进入详情页并返回-----------', content_num) # 调用用例方法,运行对应用例 # paramAndPlay.verify(driver, content_type, content_name) paramAndPlay.verify(driver,block_recommend_no,content_num) # 判断当前页面是否为频道页 while True: try: if locateElement.find_element(driver, const.Const.first_class_xpath): print ('在频道页移动焦点到下一个推荐位') break except Exception as e: print(e) focusMove.move_direction(driver, 1, 4) break
def block_recommend_travel_have_target(driver, list_block_number, block_no_name, block_no_content_list): """ 有测试推荐位的区块遍历 :param driver: :param list_block_number 区块的推荐位数量 :param block_no_name 区块名称 :param block_no_content_list 推荐位信息列表 :return: lqq """ # 初始化区块焦点 blockFocusMove.page_block_focus_move_init(driver,block_no_name) # 遍历当前区块推荐位 for block_recommend_no in range(list_block_number): block_recommend_num = block_recommend_no+1 # 遍历数从0开始,为了显示数量从1开始计数 logging.info('当前区块%s的第%s个位置' % (block_no_name, block_recommend_num)) if block_no_content_list == []: logging.info('无推荐位遍历') elif block_no_content_list != []: # 需要测试的推荐位内容 interface_block_no_content_travel(driver, block_no_content_list, block_recommend_no) # print (block_no_name, block_recommend_no) # print(type(block_no_name),type(block_recommend_no)) # 根据区块名称,推荐位编号移动焦点 blockFocusMove.page_block_focus_move(driver, block_no_name, block_recommend_no) # 2.6、区块推荐位遍历完成恢复区块焦点位置 blockFocusMove.page_block_focus_move_return(driver, block_no_name) # 向下移动焦点 focusMove.move_direction(driver, 1, 20)
def block_029_play_focus_move(driver, i): """ 处理区遍历块推荐位时焦点的移动,29号区块 :param driver: :param i: 区块推荐位列表序列号,即区块的第几个推荐位 :return: """ # if i == 0: # # 下移1次 # focusMove.move_direction(driver, 1, 20) # logging.info('焦点下移1次') # # 左移1次 # focusMove.move_direction(driver, 1, 21) # logging.info('焦点左移1次') # elif i == 1: # # 右移1次 # focusMove.move_direction(driver, 1, 22) # logging.info('焦点右移1次') # elif i == 2: # # 右移1次 # focusMove.move_direction(driver, 1, 22) # logging.info('焦点右移1次') # # 上移2次 # focusMove.move_direction(driver, 2, 19) # logging.info('焦点上移2次') # elif i == 3: # # 下移1次 # focusMove.move_direction(driver, 1, 20) # logging.info('焦点下移1次') # elif i == 4: # # 下移1次 # focusMove.move_direction(driver, 1, 20) # logging.info('焦点下移1次') # # 左移1次 # focusMove.move_direction(driver, 1, 21) # logging.info('焦点左移1次') # elif i == 5: # # 右移1次 # focusMove.move_direction(driver, 1, 22) # logging.info('焦点右移1次') # elif i == 6: # # 右移1次 # focusMove.move_direction(driver, 1, 22) # logging.info('焦点右移1次') # # 上移2次 # focusMove.move_direction(driver, 2, 19) # logging.info('焦点上移2次') # elif i == 7: # # 下移1次 # focusMove.move_direction(driver, 1, 20) # logging.info('焦点下移1次') # elif i == 8: # # 下移1次 # focusMove.move_direction(driver, 1, 20) # logging.info('焦点下移1次') # # 左移1次 # focusMove.move_direction(driver, 1, 21) # logging.info('焦点左移1次') # elif i == 9: # # 右移1次 # focusMove.move_direction(driver, 1, 22) # logging.info('焦点右移1次') # elif i == 10: # logging.info('左后一个推荐位,焦点需要移动到当前行的第一个位置') if i == 0: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 1: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 2: # 下移1次 focusMove.move_direction(driver, 1, 20) logging.info('焦点下移1次') # 左移1次 focusMove.move_direction(driver, 1, 21) logging.info('焦点左移1次') elif i == 3: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 4: # 下移1次 focusMove.move_direction(driver, 1, 20) logging.info('焦点下移1次') # 左移1次 focusMove.move_direction(driver, 6, 21) logging.info('焦点左移6次') elif i == 5: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 6: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 7: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 8: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 9: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 10: logging.info('最后一个推荐位,焦点需要移动到当前行的第一个位置')
def block_027_play_focus_move(driver, i): """ 处理区遍历块推荐位时焦点的移动,27号区块 :param driver: :param i: 区块推荐位列表序列号,即区块的第几个推荐位 :return: """ if i == 0: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 1: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 2: # 左移2次 focusMove.move_direction(driver, 2, 21) logging.info('焦点左移2次') # 下移1次 focusMove.move_direction(driver, 1, 20) logging.info('焦点下移1次') elif i == 3: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 4: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 5: # 右移1次 focusMove.move_direction(driver, 1, 22) logging.info('焦点右移1次') elif i == 6: logging.info('左后一个推荐位,焦点需要移动到当前行的第一个位置')
def verify(driver, block_recommend_no, content_num): """ 点击确认键,进入详情页,判断视频是否正常起播 :param driver:用例驱动 # :param content_type:节目类型 # :param content_name :详情页标题 :return: lqq """ try: list_page_attr = driver.current_activity # 获取导航页页面属性 logging.info('testCase:' + '获取导航页页面属性' + list_page_attr) time.sleep(2) print('点击确认键进入详情页') focusMove.move_direction(driver, 1, 23) # 点击确认按钮,进入详情页 logging.info('testCase:' + '点击确认按钮,进入详情页') time.sleep(8) detail_page_attr = driver.current_activity # 获取详情页页面属性 logging.info('testCase:' + '获取详情页页面属性' + detail_page_attr) if list_page_attr != detail_page_attr: try: detail_title_name = driver.find_element_by_id( Const.detail_title_id).text if detail_title_name: logging.info('testCase:' + '获取详情页标题' + detail_title_name) else: logging.info('页面无详情页标题,进入页面不合要求') Flag = False fileProcess.interface_data_return(Flag) focusMove.move_direction(driver, 1, 4) # 点击返回按钮,返回导航页 quit() except Exception as e: logging.info(e) # # 推荐位内容写回----- # fileProcess.interface_data_return(detail_title_name) # 进入详情页成功,判断视频是否正常播放(是否存在错误码和播放鉴权失败提示) elements = [Const.err_code_xpath, Const.err_auth_xpath] err_name_text = locateElement.elements_exist(driver, elements) print(err_name_text) logging.info('testCase:' + '错误码' + err_name_text) if err_name_text != '' and (u'失败' or u'错误' in err_name_text): # 视频播放失败,点击返回按钮,退出详情页 logging.error('testCase' + '视频播放失败,节目详情页标题为#' + detail_title_name) # 推荐位内容写回----- Flag = False # fileProcess.interface_data_return(block_recommend_no,content_num,detail_title_name,Flag) fileProcess.interface_data_return(Flag) focusMove.move_direction(driver, 1, 4) # 点击返回按钮,返回导航页 else: # 视频正常播放 logging.info('testCase:' + '视频正常播放,开始执行测试用例') time.sleep(15) # 推荐位内容写回----- Flag = True # fileProcess.interface_data_return(block_recommend_no,content_num,detail_title_name,Flag) fileProcess.interface_data_return(Flag) focusMove.move_direction(driver, 1, 4) # 点击返回按钮,返回导航页 else: logging.error('testCase' + '无法进入详情页,第' + content_num + '个推荐位') # 推荐位内容写回----- Flag = False # fileProcess.interface_data_return(block_recommend_no,content_num,Flag) fileProcess.interface_data_return(Flag) except Exception as e: print(e)
def __find_target_navigation(self, driver): """ 导航信息不为空时,移动导航焦点找到目标导航 :param driver: :return: 目标导航列表 """ navigation_name_xpath_list, len_navigation_name_xpath_list = self.__assert_target_navigation_len( ) navigation_name_list = [] for i in range(len_navigation_name_xpath_list): print(navigation_name_xpath_list[i].keys()) if len(navigation_name_xpath_list[i].keys()) != 1: logging.error("目标导航数据错误") quit() else: for key, value in navigation_name_xpath_list[i].items(): print(key, value, i) logging.info('xpath列表:', value) n = 0 while n <= Const.navigation_count: logging.info("导航焦点右移循环次数共20次,当前次数为:%s次" % n) try: navigation_name = locateElement.find_element( driver, value) logging.info(navigation_name.text) logging.info("导航名称:", navigation_name.text) if navigation_name.text == key: navigation_name_list.append( navigation_name.text) if i == 0: class_name = chr(i + 19968) else: class_name = chr(i + 20107) logging.info( "找到了%s级导航%s" % (class_name, navigation_name.text)) print("找到了%s级导航%s" % (class_name, navigation_name.text)) break else: # 未找到要找的导航名称时右移一次焦点 focusMove.move_direction(driver, 1, 22) n += 1 except Exception as e: if n == 20: logging.info('未定位到导航,已到最大循环次数%s,退出' % n) quit() else: logging.info('未定位到导航,右移焦点') focusMove.move_direction(driver, 1, 22) n += 1 print(e) # 需要增加循环等待,页面有内容时下移焦点 time.sleep(Const.navigation_wait_time) #判断导航页有无区块 locateElement.element_id(driver, Const.id, n) # 找到要测试的导航时,下移一次焦点 focusMove.move_direction(driver, 1, 20) # 返回要测试的导航名称列表 return navigation_name_list
def page_block_focus_move_return(driver, block_name): """ ''' 根据区块号确定区块内推荐位焦点的返回,将焦点移动到区块的最左侧 :param driver: :param block_name: 区块号 :return: """ if block_name == '001': pass elif block_name in ['002', '023', '028']: # 左移1次 focusMove.move_direction(driver, 1, 21) logging.info('左移1次') elif block_name in ['003', '009', '012', '026']: # 左移2次 focusMove.move_direction(driver, 2, 21) logging.info('左移2次') elif block_name in [ '004', '010', '011', '013', '015', '016', '017', '019', '027', '031' ]: # 左移3次 focusMove.move_direction(driver, 3, 21) logging.info('左移3次') elif block_name in ['005', '008', '021', '025', '029', '030']: # 左移5次 focusMove.move_direction(driver, 5, 21) logging.info('左移5次') elif block_name in ['006', '007', '024']: # 左移7次 focusMove.move_direction(driver, 7, 21) logging.info('左移7次') # elif block_name == '014': # # 下移1次 # focusMove.move_direction(driver, 1, 20) # logging.info('下移1次') # # 左移2次 # focusMove.move_direction(driver, 2, 21) # logging.info('左移2次') elif block_name == '014': # 左移2次 focusMove.move_direction(driver, 1, 21) logging.info('左移1次') # elif block_name == '018': # # 下移1次 # focusMove.move_direction(driver, 1, 20) # logging.info('下移1次') # # 左移1次 # focusMove.move_direction(driver, 1, 21) # logging.info('左移1次') elif block_name == '018': # 左移1次 focusMove.move_direction(driver, 1, 21) logging.info('左移1次') elif block_name == '020': logging.info('not 20') elif block_name == '022': # 左移4次 focusMove.move_direction(driver, 4, 21) logging.info('左移4次') elif block_name == '032': # 左移1次 focusMove.move_direction(driver, 1, 21) logging.info('左移1次')