def test_settings_privacy(self): """设置:隐私设置.""" sc.logger.info('设置:隐私设置') fun_name = 'test_settings_privacy' start_x = self.width // 2 start_bottom = self.height - self.height // 10 WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_android_uiautomator( 'text("私信权限")')).click() sc.find_by_classes('android.widget.TextView', fun_name, self.img_path) sc.logger.info('隐私权限设置遍历完成') WebDriverWait(sc.driver, 10, 1).until(lambda el: el.find_element_by_id( 'com.quvideo.xiaoying:id/img_back')).click() WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_android_uiautomator( 'new UiSelector().text("隐私帐号")')).click() time.sleep(1) try: sc.driver.find_element_by_android_uiautomator( 'new UiSelector().text("水印显示昵称")').click() except NoSuchElementException: sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.3, 500) sc.driver.find_element_by_android_uiautomator( 'new UiSelector().text("水印显示昵称")').click() sc.logger.info('设置:隐私设置测试完成')
def test_home_minor(self): """首页-次要功能位检查.""" sc.logger.info('首页-次要功能位检查') fun_name = 'test_home_minor' sc.logger.info('点击创作中心主按钮') c_btn = 'com.quvideo.xiaoying:id/img_creation' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(c_btn)).click() sub_icon_btn = 'com.quvideo.xiaoying:id/sub_btn_icon' element_list = sc.driver.find_elements_by_id(sub_icon_btn) element_list.pop(0) for element_em in element_list: element_em.click() time.sleep(2) sc.driver.press_keycode(4) sc.capture_screen(fun_name, self.img_path) coord_x = element_list[-1].location.get('x') coord_y = element_list[-1].location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'left', 0.7, 500) sec_list = sc.driver.find_elements_by_id(sub_icon_btn) for sec_em in sec_list: sec_em.click() time.sleep(2) sc.driver.press_keycode(4) sc.capture_screen(fun_name, self.img_path) sc.logger.info('首页-次要功能位检查完毕')
def test_search_follow(self): """小影圈搜索结果中的关注测试,为了简化流程,请与上一条连起来用.""" sc.logger.info('小影圈搜索结果,关注测试开始') fun_name = 'test_search_follow' start_x = self.width // 4 start_bottom = self.heigh // 2 # 查找用户关注按钮 time.sleep(1) sc.logger.info('开始查找搜索结果用户页面中的第一个用户关注按钮') sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.3, 500) WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_android_uiautomator( 'text("关注")')).click() WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_android_uiautomator( 'text("已关注")')).click() sc.logger.info('小影圈搜索结果,用户页面关注情况截图') sc.capture_screen(fun_name, self.img_path) # 取消关注 sc.logger.info('开始取消关注') pos_btn = 'com.quvideo.xiaoying:id/buttonDefaultPositive' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(pos_btn)).click() sc.logger.info('小影圈搜索结果,用户页面取消关注后情况截图') sc.capture_screen(fun_name, self.img_path)
def test_home_other(self): """首页-小影百宝箱及其他.""" sc.logger.info('首页-推荐位-小影百宝箱及其他') fun_name = 'test_home_other' start_x = self.width // 2 start_bottom = self.height - self.height // 5 time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 500) vip_btn = 'com.quvideo.xiaoying:id/btn_vip' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(vip_btn)).click() back_img = 'com.quvideo.xiaoying:id/vip_home_close' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(back_img)).click() shuffle_btn = 'com.quvideo.xiaoying:id/btn_shuffle' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(shuffle_btn)).click() sc.driver.press_keycode(4) img_item = 'com.quvideo.xiaoying:id/creation_item_img' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(img_item)).click() sc.capture_screen(fun_name, self.img_path) time.sleep(3) sc.driver.press_keycode(4) sc.logger.info('首页-推荐位-小影百宝箱及其他检查完毕')
def test_preview_recommend(self): """音乐库-推荐音乐下载.""" sc.logger.info('音乐库-推荐音乐下载') fun_name = 'test_preview_recommend' start_x = self.width // 2 start_bottom = self.height - self.height // 4 sc.logger.info('点击添加配乐') b_btn = 'com.quvideo.xiaoying:id/txtview_bgm_name' WebDriverWait( sc.driver, 10, 1).until(lambda c_btn: c_btn.find_element_by_id(b_btn)).click() # 推荐音乐下载 while True: try: sc.driver.find_element_by_android_uiautomator( 'text("没有更多了…")').click() break except NoSuchElementException: sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 600) sc.logger.info('下载音乐') music_item_download = 'com.quvideo.xiaoying:id/music_item_download' WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(music_item_download)).click() time.sleep(5) sc.capture_screen(fun_name, self.img_path) sc.logger.info('音乐库-推荐音乐下载测试完成')
def test_home_studio(self): """首页-我的工作室.""" sc.logger.info('首页-我的工作室') fun_name = 'test_home_studio' start_x = self.width // 2 start_bottom = self.height // 5 sc.logger.info('下滑一点') time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'down', 0.7, 700) sc.capture_screen(fun_name, self.img_path) WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_android_uiautomator( 'text("更多草稿")')).click() sc.logger.info('点击第一个草稿封面') draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb' sc.driver.find_element_by_id(draft_img).click() time.sleep(1) try: sc.logger.info('点击左上角返回') left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(left_btn)).click() sc.capture_screen(fun_name, self.img_path) except NoSuchElementException: sc.logger.info('此草稿视频为拍摄视频,返回的是拍摄页面') cancel_btn = 'com.quvideo.xiaoying:id/cam_btn_cancel' sc.driver.find_element_by_id(cancel_btn).click() sc.capture_screen(fun_name, self.img_path) sc.driver.press_keycode(4) sc.logger.info('点击“保存/上传”') publish_btn = 'com.quvideo.xiaoying:id/xiaoying_studio_publish_btn' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(publish_btn)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击左上角返回') back_img = 'com.quvideo.xiaoying:id/img_back' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(back_img)).click() sc.logger.info('删除一个草稿') del_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_delete' WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_id(del_img)).click() sc.driver.find_element_by_android_uiautomator('text("确认")').click() sc.driver.press_keycode(4) sc.logger.info('首页-我的工作室完成')
def test_theme_download(self): """预览页-主题下载.""" sc.logger.info('预览页-主题下载') fun_name = 'test_theme_download' start_x = self.width // 4 start_bottom = self.height - self.height // 10 start_y = self.height // 3 time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'right', 0.5, 500) sc.logger.info('点击“下载更多”') thumb_bg = 'com.quvideo.xiaoying:id/imgview_get_more_thumbnail_bg' WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(thumb_bg)).click() try: sc.logger.info('点击“使用”按钮') u_btn = 'com.quvideo.xiaoying:id/template_caption_grid_btn_update' WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(u_btn)).click() time.sleep(1) sc.driver.swipe(start_x, start_y, start_x, start_y, 1000) except TimeoutException: sc.logger.info('点击下载按钮') sc.capture_screen(fun_name, self.img_path) down_btn = 'com.quvideo.xiaoying:id/imgbtn_download' WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(down_btn)).click() try: WebDriverWait(sc.driver, 30).until( lambda el: el.find_element_by_android_uiautomator( 'text("使用")')).click() time.sleep(1) sc.driver.swipe(start_x, start_y, start_x, start_y, 1000) except TimeoutError as t: sc.logger.error('素材下载超时', t) sc.logger.info('返回创作中心主界面') for i in range(4): time.sleep(1) sc.driver.press_keycode(4) return False except Exception as e: sc.logger.info('返回创作中心主界面') for i in range(4): time.sleep(1) sc.driver.press_keycode(4) sc.logger.error('素材下载失败', e) return False sc.logger.info('返回创作中心主界面') for i in range(3): time.sleep(1) sc.driver.press_keycode(4) sc.logger.info('预览页-主题测试完成')
def test_search_page(self): """小影圈搜索页面输入状态测试.""" sc.logger.info('小影圈搜索页面输入状态测试开始') fun_name = 'test_search_page' start_x = self.width // 2 start_bottom = self.heigh - self.heigh // 8 sc.logger.info('点击小影圈主按钮') p_btn = 'com.quvideo.xiaoying:id/img_find' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(p_btn)).click() sc.logger.info('开始查找小影圈搜索按钮') search_btn = 'com.quvideo.xiaoying:id/btn_search' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(search_btn)).click() sc.logger.info('开始向小影圈搜索框输入字符a') search_frame = 'com.quvideo.xiaoying:id/edittext_search' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(search_frame)).click() sc.driver.press_keycode(29) sc.logger.info('小影圈搜索框输入文字"a"截图开始') sc.capture_screen(fun_name, self.img_path) # sc.driver.hide_keyboard() # sc.driver.press_keycode(4) sc.logger.info('开始查找输入框补全内容') keyword_frame = 'com.quvideo.xiaoying:id/textview_keyword' sc.logger.info('点击第一条自动联想内容') WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(keyword_frame)).click() time.sleep(2) sc.logger.info('开始查找搜索结果中的用户') res_user_id = 'com.quvideo.xiaoying:id/img_simple_user_avatar_click' WebDriverWait(sc.driver, 10, 1).until(lambda el: el.find_element_by_id(res_user_id)) sc.logger.info('开始查找搜索结果中的视频') res_video_id = 'com.quvideo.xiaoying:id/xiaoying_com_img_video_thumb' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(res_video_id)).click() sc.logger.info('小影圈搜索结果截图') sc.capture_screen(fun_name, self.img_path) sc.logger.info('小影圈搜索结果下滑截图') time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 500) sc.capture_screen(fun_name, self.img_path)
def test_template_filter(self): """素材中心-滤镜.""" sc.logger.info('素材中心-滤镜') fun_name = 'test_template_filter' start_x = self.width // 2 start_bottom = self.height - self.height // 5 time.sleep(1) sc.logger.info('点击创作中心主按钮') sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/img_creation').click() sc.logger.info('点击“素材中心”') sc.driver.find_element_by_android_uiautomator('text("素材中心")').click() try: sc.logger.info('点击“滤镜”') sc.driver.find_element_by_android_uiautomator('text("滤镜")').click() except NoSuchElementException: sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 300) sc.driver.find_element_by_android_uiautomator('text("滤镜")').click() sc.logger.info('开始下载滤镜') try: el_template_down = sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/template_filter_download') el_template_down.click() except NoSuchElementException: sc.logger.info('当前页面所有滤镜已下载完成') sc.logger.info('检查滤镜下载是否成功') try: WebDriverWait( sc.driver, 30).until(lambda use: use.find_element_by_android_uiautomator( 'text("使用")')) except TimeoutError as t: sc.logger.info('滤镜下载超时', t) return False except Exception as e: sc.logger.info('滤镜下载失败', e) return False sc.logger.info('滤镜下载测试完成') self.template_use('滤镜') sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click() time.sleep(1) sc.driver.find_element_by_android_uiautomator('text("存草稿")').click() time.sleep(10) sc.capture_screen(fun_name, self.img_path) sc.driver.press_keycode(4) time.sleep(2) sc.logger.info('删除刚刚下载的滤镜') sc.capture_screen(fun_name, self.img_path) self.theme_manager('滤镜', 'com.quvideo.xiaoying:id/img_delete')
def test_notify_info(self): """测试消息中心通知页.""" sc.logger.info('开始测试消息中心通知页.') fun_name = 'test_notify_info' start_x = self.width - self.width // 8 start_y = self.height // 2 time.sleep(1) sc.swipe_by_ratio(start_x, start_y, 'left', 0.7, 500) sc.logger.info('消息中心通知页截图') sc.capture_screen(fun_name, self.img_path)
def test_share_edit(self): """分享-编辑视频标题/话题相关.""" sc.logger.info('分享-编辑视频标题/话题相关') fun_name = 'test_share_edit' start_x = self.width // 2 start_bottom = self.height - self.height // 4 sc.logger.info('添加标题') text_input = 'com.quvideo.xiaoying:id/share_video_title_text' el_title = WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(text_input)) el_title.clear() el_title.send_keys('video title test') sc.logger.info('添加话题') topic_btn = 'com.quvideo.xiaoying:id/share_btn_add_topic' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(topic_btn)).click() time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 500) name_tag = 'com.quvideo.xiaoying:id/txtview_tag_name' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(name_tag)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('隐私设置') privacy_btn = 'com.quvideo.xiaoying:id/share_btn_privacy' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(privacy_btn)).click() vis_btn = 'com.quvideo.xiaoying:id/private_setting_visible_btn' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(vis_btn)).click() down_btn = 'com.quvideo.xiaoying:id/private_setting_candnload_btn' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(down_btn)).click() pos_btn = 'com.quvideo.xiaoying:id/buttonDefaultPositive' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(pos_btn)).click() sc.logger.info('导出-导出页编辑测试完成')
def test_video_like(self): """测试视频的点赞功能.""" sc.logger.info('开始测试视频的点赞功能.') fun_name = 'test_video_like' start_x = self.width // 2 start_bottom = self.height - self.height // 4 time.sleep(1) # 先上滑半屏,便于处理全屏视频 sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300) sc.capture_screen(fun_name, self.img_path) btn_like = 'com.quvideo.xiaoying:id/like_btn' sc.driver.find_element_by_id(btn_like).click() sc.capture_screen(fun_name, self.img_path)
def test_notify_message(self): """测试消息中心动态.""" sc.logger.info('开始测试消息中心私信.') fun_name = 'test_notify_message' start_x = self.width - self.width // 8 start_y = self.height // 2 time.sleep(1) sc.swipe_by_ratio(start_x, start_y, 'left', 0.7, 500) sc.logger.info('消息中心私信页截图') sc.capture_screen(fun_name, self.img_path) sc.logger.info('通知中心测试完成,返回主页') sc.driver.press_keycode(4)
def test_works_list_function(self): """作品页面list view内功能测试.""" sc.logger.info('作品页面list view功能测试开始') fun_name = 'test_works_list' start_x = self.width // 2 start_bottom = self.height - self.height // 8 try: el_like_btn = sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/img_like') except NoSuchElementException: sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300) time.sleep(1) el_like_btn = sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/img_like') # 操作前先截图记录 sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击点赞按钮') el_like_btn.click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击分享按钮') el_share_btn = 'com.quvideo.xiaoying:id/xiaoying_com_text_share_count' el_share = sc.driver.find_element_by_id(el_share_btn) el_share.click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击下载按钮') time.sleep(1) sc.driver.find_element_by_android_uiautomator('text("下载")').click() sc.capture_screen(fun_name, self.img_path) sc.driver.press_keycode(4) sc.logger.info('点击公开/不公开按钮') time.sleep(1) el_more_btn = 'com.quvideo.xiaoying:id/btn_more' el_more = sc.driver.find_element_by_id(el_more_btn) el_more.click() sc.capture_screen(fun_name, self.img_path) try: el_privacy = sc.driver.find_element_by_android_uiautomator( 'text("设置为不公开")') except NoSuchElementException: el_privacy = sc.driver.find_element_by_android_uiautomator( 'text("设置为公开")') el_privacy.click() assert el_privacy is not None
def test_template_transition(self): """素材中心-转场.""" sc.logger.info('素材中心-转场') fun_name = 'test_template_transition' start_x = self.width // 2 start_bottom = self.height - self.height // 4 time.sleep(1) sc.logger.info('点击创作中心主按钮') sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/img_creation').click() sc.logger.info('点击“素材中心”') sc.driver.find_element_by_android_uiautomator('text("素材中心")').click() time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300) time.sleep(1) sc.logger.info('点击“转场”') sc.driver.find_element_by_android_uiautomator('text("转场")').click() time.sleep(1) try: btn_download = 'com.quvideo.xiaoying:id/imgbtn_download' sc.driver.find_element_by_id(btn_download) self.template_download('转场', btn_download) except NoSuchElementException: sc.logger.info('当前页面素材已经全部下载完毕了') time.sleep(1) self.template_use('转场') sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click() sc.driver.find_element_by_android_uiautomator('text("存草稿")').click() time.sleep(1) sc.driver.press_keycode(4) time.sleep(1) sc.driver.find_element_by_android_uiautomator('text("素材中心")').click() time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300) time.sleep(1) sc.driver.find_element_by_android_uiautomator('text("转场")').click() sc.logger.info('删除刚刚下载的转场') sc.capture_screen(fun_name, self.img_path) self.theme_manager( '转场', 'com.quvideo.xiaoying:id/template_caption_grid_btn_update')
def test_origin_home(self): """测试创作页home tab的功能""" sc.logger.info('创作页面home tab功能检查测试开始') fun_name = 'test_origin_home' start_x = self.width // 2 start_bottom = self.height - self.height // 8 # 先上滑一点 sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500) time.sleep(1) sc.capture_screen(fun_name, self.img_path) # 再按home tab sc.logger.info('点击创作中心主按钮') c_btn = 'com.quvideo.xiaoying:id/img_creation' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(c_btn)).click() sc.capture_screen(fun_name, self.img_path)
def hardware_acceleration(cls): """硬件加速设置.""" try: sc.logger.info('尝试开启硬件加速') WebDriverWait(sc.driver, 5, 1).until( lambda el: el.find_element_by_android_uiautomator( 'text("视频处理硬件加速")')).click() except TimeoutException: sc.logger.info('未找到硬件加速选项,上滑半屏尝试') start_x = cls.width // 2 start_y = cls.height // 8 start_bottom = cls.height - start_y sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.4, 600) WebDriverWait(sc.driver, 5, 1).until( lambda el: el.find_element_by_android_uiautomator( 'text("视频处理硬件加速")')).click() time.sleep(1) sc.driver.press_keycode(4)
def test_preview_other(self): """音乐库-其他分类音乐下载.""" sc.logger.info('音乐库-其他分类音乐下载') fun_name = 'test_preview_other' start_x = self.width - self.width // 5 start_bottom = self.height // 2 # 切换到流行分类 time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.7, 500) sc.logger.info('点击第一个可下载按钮') sc.logger.info('下载音乐') music_item_download = 'com.quvideo.xiaoying:id/music_item_download' WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(music_item_download)).click() time.sleep(5) sc.capture_screen(fun_name, self.img_path) sc.logger.info('音乐库-其他分类音乐下载测试完成')
def test_swipe_vertical(self): """测试上下方向的滑动""" sc.logger.info('创作页面上下滑动测试开始') fun_name = 'test_swipe_vertical' start_x = self.width // 2 start_y = self.height // 8 start_bottom = self.height - start_y # 先上滑 sc.logger.info('上滑截图开始') result_up = sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 300) time.sleep(1) sc.capture_screen(fun_name, self.img_path) # 再下滑,同理 sc.logger.info('下滑截图开始') result_down = sc.swipe_by_ratio(start_x, start_y, 'down', 0.7, 300) time.sleep(.300) sc.capture_screen(fun_name, self.img_path) assert result_up and result_down is True
def test_refresh(self): """测试下拉刷新""" sc.logger.info('创作页面下拉刷新测试开始') fun_name = 'test_refresh' start_x = self.width // 2 start_y = self.height // 8 result = sc.swipe_by_ratio(start_x, start_y, 'down', 0.6, 600) time.sleep(1) sc.capture_screen(fun_name, self.img_path) assert result is True
def test_origin_home(self): """推荐页tab的功能.""" sc.logger.info('推荐页面tab功能检查测试开始') fun_name = 'test_origin_home' start_x = self.width // 2 start_bottom = self.heigh - self.heigh // 8 # 先上滑一点 time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500) sc.logger.info('小影圈推荐页面轻微上滑截图开始') sc.capture_screen(fun_name, self.img_path) # 再按推荐tab sc.logger.info('开始查找小影圈推荐tab') WebDriverWait( sc.driver, 30).until(lambda el: el.find_element_by_android_uiautomator( 'text("推荐")')).click() time.sleep(1) sc.logger.info('小影圈推荐页面点击“推荐”tab截图开始') sc.capture_screen(fun_name, self.img_path)
def test_gallery_giveup(self): """相册-放弃操作.""" sc.logger.info('相册-放弃操作') fun_name = 'test_gallery_giveup' start_x = self.width // 2 start_bottom = self.height - self.height // 4 first_icon = 'com.quvideo.xiaoying:id/icon1' WebDriverWait(sc.driver, 10, 1).until( lambda c_btn: c_btn.find_element_by_id(first_icon)).click() mask_img = 'com.quvideo.xiaoying:id/img_click_mask' WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(mask_img)).click() sc.capture_screen(fun_name, self.img_path) left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left' sc.driver.find_element_by_id(left_btn).click() sc.capture_screen(fun_name, self.img_path) sc.driver.find_element_by_android_uiautomator('text("视频")').click() sc.driver.find_element_by_android_uiautomator('text("图片")').click() sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 500) img_icon = 'com.quvideo.xiaoying:id/img_icon' element_list = sc.driver.find_elements_by_id(img_icon) if len(element_list) >= 2: element_list = element_list[:2] for element_em in element_list: element_em.click() time.sleep(1) sc.capture_screen(fun_name, self.img_path) sc.driver.find_element_by_id(left_btn).click() sc.driver.find_element_by_android_uiautomator('text("丢弃")').click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('相册-放弃操作相关操作测试完成')
def test_user_follow_list(self): """用户中心关注页面上下滑动测试.""" sc.logger.info('用户中心关注页面上下滑动测试开始') fun_name = 'test_user_follow_list' start_x = self.width // 2 start_y = self.height // 4 start_bottom = self.height - start_y time.sleep(1) # 先上滑 sc.logger.info('上滑截图开始') result_up = sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 300) time.sleep(1) sc.capture_screen(fun_name, self.img_path) # 再下滑,同理 sc.logger.info('下滑截图开始') result_down = sc.swipe_by_ratio(start_x, start_y, 'down', 0.3, 300) time.sleep(1) sc.capture_screen(fun_name, self.img_path) assert result_up and result_down is True
def test_template_sticker(self): """素材中心-动画贴纸.""" sc.logger.info('素材中心-动画贴纸') fun_name = 'test_template_sticker' start_x = self.width // 2 start_bottom = self.height - self.height // 4 time.sleep(1) sc.logger.info('点击创作中心主按钮') sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/img_creation').click() sc.logger.info('点击“素材中心”') sc.driver.find_element_by_android_uiautomator('text("素材中心")').click() time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300) sc.logger.info('点击“动画贴纸”') sc.driver.find_element_by_android_uiautomator('text("动画贴纸")').click() self.template_download( '动画贴纸', 'com.quvideo.xiaoying:id/template_pack_download_progress') self.template_use('动画贴纸') sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click() sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click() sc.driver.find_element_by_android_uiautomator('text("存草稿")').click() time.sleep(1) sc.driver.press_keycode(4) time.sleep(1) sc.driver.find_element_by_android_uiautomator('text("素材中心")').click() time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300) sc.driver.find_element_by_android_uiautomator('text("动画贴纸")').click() sc.logger.info('删除刚刚下载的动画贴纸') sc.capture_screen(fun_name, self.img_path) self.theme_manager('动画贴纸', 'com.quvideo.xiaoying:id/img_delete')
def test_search_result(self): """小影圈搜索结果测试,为了简化流程,请与上一条连起来用.""" sc.logger.info('小影圈搜索结果测试开始') fun_name = 'test_search_result' start_x = self.width - self.width // 4 start_bottom = self.heigh - self.heigh // 8 # 左滑一次 sc.logger.info('开始左滑至“视频”页面') time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.7, 500) time.sleep(1) sc.logger.info('开始查找搜索结果视频页面中的视频') res_video_id = 'com.quvideo.xiaoying:id/xiaoying_com_img_video_thumb' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(res_video_id)).click() sc.logger.info('小影圈搜索结果视频页面截图') sc.capture_screen(fun_name, self.img_path) sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.4, 500) time.sleep(1) sc.logger.info('小影圈搜索结果视频页面下滑截图') sc.capture_screen(fun_name, self.img_path) # 再左滑一次 sc.logger.info('开始滑动至“用户”页面') sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.7, 500) sc.logger.info('开始查找搜索结果用户页面中的第一个用户') res_user_id = 'com.quvideo.xiaoying:id/fans_name' WebDriverWait(sc.driver, 10, 1).until(lambda el: el.find_element_by_id(res_user_id)) sc.logger.info('小影圈搜索结果用户页面截图') sc.capture_screen(fun_name, self.img_path) time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.3, 500) sc.logger.info('小影圈搜索结果用户界面下滑截图') sc.capture_screen(fun_name, self.img_path)
def test_origin_home(self): """发现页tab的功能.""" sc.logger.info('发现页面tab功能检查测试开始') start_x = self.width // 2 start_bottom = self.height - self.height // 8 fun_name = 'test_origin_home' # 先上滑一点 result_up = sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500) time.sleep(1) sc.logger.info('小影圈发现页面轻微上滑截图开始') sc.capture_screen(fun_name, self.img_path) # 再按发现tab sc.logger.info('开始查找小影圈发现tab') el_tab_list = sc.driver.find_elements_by_id('android:id/text1') for el_tab in el_tab_list: if el_tab.text == '发现': sc.logger.info('点击“发现”tab') el_tab.click() break time.sleep(1) sc.logger.info('小影圈发现页面点击“发现”tab截图开始') sc.capture_screen(fun_name, self.img_path) assert result_up and el_tab is not None
def test_clip_edit_function(self): """剪辑-镜头编辑-功能遍历.""" sc.logger.info('剪辑-镜头编辑-功能遍历') fun_name = 'test_clip_edit_function' video_flag = 0 sc.logger.info('点击创作中心主按钮') c_btn = 'com.quvideo.xiaoying:id/img_creation' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(c_btn)).click() sc.logger.info('点击“更多草稿”') sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click() sc.logger.info('点击草稿封面') draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(draft_img)).click() sc.logger.info('尝试点击“编辑该视频”') edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text' try: WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_id(edit_btn)).click() except TimeoutException: sc.logger.info('该视频已经在编辑页,跳过此步骤') sc.logger.info('点击“镜头编辑”') WebDriverWait( sc.driver, 10, 1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator( 'text("镜头编辑")')).click() confirm_btn = 'com.quvideo.xiaoying:id/terminator_right' sc.logger.info('剪辑-镜头编辑-图片时长') try: sc.logger.info('点击“图片时长”') WebDriverWait(sc.driver, 5, 1).until( lambda c_btn: c_btn.find_element_by_android_uiautomator( 'text("图片时长")')).click() sc.logger.info('点击“确认”') sc.driver.find_element_by_id(confirm_btn).click() except TimeoutException: video_flag = 1 sc.logger.info('当前镜头是视频,不支持时长') sc.logger.info('剪辑-镜头编辑-修剪') try: sc.logger.info('点击“修剪”') WebDriverWait(sc.driver, 10, 1).until( lambda c_btn: c_btn.find_element_by_android_uiautomator( 'text("修剪")')).click() sc.logger.info('点击“确认”') WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(confirm_btn)).click() except NoSuchElementException: sc.logger.info('当前镜头是图片,不支持修剪') sc.logger.info('剪辑-镜头编辑-分割') if video_flag == 1: sc.logger.info('点击“分割”') WebDriverWait(sc.driver, 10, 1).until( lambda c_btn: c_btn.find_element_by_android_uiautomator( 'text("分割")')).click() sc.logger.info('点击“确认”') WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(confirm_btn)).click() try: WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_id(confirm_btn)) sc.logger.info('时长太短不能分割') sc.driver.press_keycode(4) except TimeoutException: sc.logger.info('分割成功') sc.logger.info('剪辑-镜头编辑-复制') el_copy = WebDriverWait( sc.driver, 10, 1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator( 'text("复制")')) el_copy.click() sc.logger.info('工具栏左滑一些') time.sleep(2) coord_x = el_copy.location.get('x') coord_y = el_copy.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'left', 0.5, 800) sc.capture_screen(fun_name, self.img_path) sc.logger.info('剪辑-镜头编辑-变速') if video_flag == 1: sc.logger.info('点击“变速”') sc.driver.find_element_by_android_uiautomator('text("变速")').click() sc.logger.info('点击“确认”') WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(confirm_btn)).click() sc.logger.info('剪辑-镜头编辑-调色') sc.logger.info('点击“调色”') WebDriverWait( sc.driver, 10, 1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator( 'text("调色")')).click() sc.logger.info('点击“确认”') WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(confirm_btn)).click() sc.logger.info('剪辑-镜头编辑-静音') sc.logger.info('点击“静音”') WebDriverWait( sc.driver, 10, 1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator( 'text("静音")')).click() sc.logger.info('剪辑-镜头编辑-倒放镜头') sc.logger.info('点击“倒放镜头”') WebDriverWait( sc.driver, 10, 1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator( 'text("倒放镜头")')).click() try: WebDriverWait( sc.driver, 120).until(lambda reverse: reverse. find_element_by_android_uiautomator('text("倒放镜头")')) except TimeoutError as t: sc.logger.error('倒放镜头超时', t) return False sc.logger.info('剪辑-镜头编辑-旋转') sc.logger.info('点击“旋转”') WebDriverWait( sc.driver, 10, 1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator( 'text("旋转")')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('返回创作中心主界面') for i in range(2): time.sleep(1) sc.driver.press_keycode(4) sc.logger.info('剪辑-镜头编辑-功能遍历完成')
def test_settings_live(self): """设置:摄像头校正.""" sc.logger.info('设置:摄像头校正') fun_name = 'test_settings_live' start_x = self.width // 2 start_bottom = self.height - self.height // 10 sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.3, 500) sc.capture_screen(fun_name, self.img_path) WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_android_uiautomator( 'new UiSelector().text("摄像头校正")')).click() WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_android_uiautomator( 'new UiSelector().text("校正前置摄像头")')).click() time.sleep(3) sc.logger.info('校正前置摄像头时截图') sc.capture_screen(fun_name, self.img_path) left_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_rotate_left' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(left_btn)).click() r_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_rotate_right' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(r_btn)).click() h_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_flip_horizontal' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(h_btn)).click() v_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_flip_vertical' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(v_btn)).click() sc.driver.press_keycode(4) WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_android_uiautomator( 'text("摄像头校正")')).click() WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_android_uiautomator( 'text("校正后置摄像头")')).click() time.sleep(2) sc.logger.info('校正后置摄像头时截图') sc.capture_screen(fun_name, self.img_path) left_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_rotate_left' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(left_btn)).click() r_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_rotate_right' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(r_btn)).click() h_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_flip_horizontal' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(h_btn)).click() v_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_flip_vertical' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(v_btn)).click() sc.driver.press_keycode(4) sc.logger.info('设置:摄像头校正测试完成')
def test_settings_feedback(self): """设置:意见反馈.""" sc.logger.info('设置:意见反馈') fun_name = 'test_settings_feedback' start_x = self.width // 2 start_bottom = self.height - self.height // 10 time.sleep(2) sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 500) WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_android_uiautomator( 'text("意见反馈")')).click() try: sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/feedback_btn_issue_create').click() except NoSuchElementException: sc.logger.info('当前是第一次反馈') el_question_msg = sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/feedback_question_msg') el_question_msg.send_keys('QA test feedback') sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/feedback_question_type').click() WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_android_uiautomator( 'text("完成")')).click() sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/feedback_layout_sh_').click() sc.capture_screen(fun_name, self.img_path) sc.driver.press_keycode(4) time.sleep(1) el_qq_contact = sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/feedback_contact_edit_1') el_qq_contact.send_keys('245603638') el_ph_contact = sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/feedback_contact_edit_2') el_ph_contact.send_keys('15857154810') sc.capture_screen(fun_name, self.img_path) sc.driver.find_element_by_android_uiautomator( 'new UiSelector().text("提交")').click() time.sleep(2) sc.capture_screen(fun_name, self.img_path) """ sc.logger.info('查看反馈') el_feedback = sc.driver.find_element_by_id( 'com.quvideo.xiaoying:id/feedback_layout_history_item') el_feedback.click() sc.capture_screen(fun_name, self.img_path) sc.driver.press_keycode(4) """ left_icon = 'com.quvideo.xiaoying:id/feedback_left_icon' WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_id(left_icon)).click() sc.logger.info('意见反馈测试完成')
def test_gallery_video(self): """相册-视频.""" sc.logger.info('相册-视频') fun_name = 'test_gallery_video' start_x = self.width // 2 start_bottom = self.height - self.height // 4 start_y = self.height // 3 sc.logger.info('点击创作中心主按钮') c_btn = 'com.quvideo.xiaoying:id/img_creation' WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(c_btn)).click() sc.logger.info('点击“剪辑”') sc.driver.find_element_by_id('com.quvideo.xiaoying:id/icon1').click() time.sleep(1) try: sc.driver.find_element_by_android_uiautomator('text("跳过")').click() first_icon = 'com.quvideo.xiaoying:id/icon1' WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(first_icon)).click() except NoSuchElementException: sc.logger.info('已跳过订阅页面') sc.logger.info('点击“其它相册”') sc.driver.find_element_by_android_uiautomator('text("其他相册")').click() sc.capture_screen(fun_name, self.img_path) sc.driver.find_element_by_android_uiautomator('text("全部")').click() time.sleep(1) sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 500) mask_img = 'com.quvideo.xiaoying:id/img_click_mask' WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(mask_img)).click() sc.capture_screen(fun_name, self.img_path) rotate_btn = 'com.quvideo.xiaoying:id/imgbtn_ratate' WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(rotate_btn)).click() try: crop_btn = 'com.quvideo.xiaoying:id/imgbtn_crop' sc.driver.find_element_by_id(crop_btn).click() except NoSuchElementException: sc.logger.info('视频尺寸1:1,无此选项') trip_btn = 'com.quvideo.xiaoying:id/btn_start_trim' sc.driver.find_element_by_id(trip_btn).click() import_btn = 'com.quvideo.xiaoying:id/imgbtn_import' WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(import_btn)).click() sc.capture_screen(fun_name, self.img_path) try: n_btn = 'com.quvideo.xiaoying:id/xiaoying_com_storyboard_next_btn' WebDriverWait(sc.driver, 60).until( lambda x: x.find_element_by_id(n_btn)).click() except TimeoutError as t: sc.logger.error('导入视频超时', t) return False except Exception as e: sc.logger.error('导入视频出错', e) return False sc.capture_screen(fun_name, self.img_path) time.sleep(1) sc.driver.swipe(start_x, start_y, start_x, start_y, 1000) sc.driver.find_element_by_android_uiautomator('text("存草稿")').click() left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left' WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_id(left_btn)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('相册-视频相关操作测试完成')