def test_settings_02_feedback(self): """设置:意见反馈.""" sc.logger.info('设置:意见反馈') fun_name = 'test_settings_feedback' start_x = self.width // 2 start_y = self.height // 8 start_bottom = self.height - start_y sc.logger.info('向上滑动') for i in range(2): sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 300) sc.logger.info("意见反馈") WebDriverWait( sc.driver, 3, 1).until(lambda el: el.find_element_by_name('意见反馈')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info("填写意见反馈") ba.feedback() sc.capture_screen(fun_name, self.img_path) sc.logger.info("返回设置页") sc.driver.find_element_by_name(iOS_elements.el_com_back).click() sc.logger.info('意见反馈测试完成')
def test_music_02_recommend(self): """音乐库-推荐音乐下载.""" sc.logger.info('音乐库-推荐音乐下载') fun_name = 'test_preview_recommend' sc.logger.info('点击“添加配乐”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("添加配乐")).click() # 推荐音乐下载 sc.logger.info('向上滑动') start_x = self.width // 2 start_y = self.height // 8 start_bottom = self.height - start_y for i in range(2): sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 300) sc.logger.info('下载音乐') music_list = sc.driver.find_elements_by_name( iOS_elements.el_mus_download) if len(music_list) >= 3: music_list = music_list[:3] for el_music in music_list: el_music.click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('音乐库-推荐音乐下载测试完成')
def home_first_click(el_fun): ''' 从创作页面进入各个入口. :param fun: 打开的入口 :param el: 点击的控件 :return: ''' """ 视频剪辑/高清拍摄/次要功能位置相关/更多草稿等 """ sc.logger.info('点击创作中心主按钮') home_enter() sc.logger.info('点击 %s', el_fun) try: WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name(el_fun)).click() except TimeoutException: sc.logger.info('向左滑动') el_template = sc.driver.find_element_by_name('素材中心') coord_x = el_template.location.get('x') coord_y = el_template.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'left', 0.6, 500) # 从素材中心向左滑动 WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name(el_fun)).click()
def test_preview_04_other(self): """音乐库-其他分类音乐下载.""" sc.logger.info('音乐库-其他分类音乐下载') fun_name = 'test_preview_other' sc.logger.info('通过滑动屏幕切换到"流行"分类') start_x = self.width - self.width // 5 start_bottom = self.height // 2 sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.7, 500) sc.logger.info('下载"流行"分类音频') time.sleep(1) el_download = sc.driver.find_element_by_name( 'vivavideo material download3 n') el_download.click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('通过点击分类tab切换到"爵士 & 蓝调"分类') sc.driver.find_element_by_name("爵士 & 蓝调").click() sc.logger.info('下载"爵士 & 蓝调"分类音频') time.sleep(1) el_download = sc.driver.find_element_by_name( 'vivavideo material download3 n') el_download.click() sc.capture_screen(fun_name, self.img_path)
def test_template_01_theme(self): """素材中心-主题.""" sc.logger.info('进入素材中心-主题') fun_name = 'test_template_theme' start_x = self.width - self.width // 5 start_bottom = self.height // 2 time.sleep(5) sc.logger.info('点击创作中心主按钮') try: sc.driver.find_element_by_xpath( "//XCUIElementTypeImage[@name='camerta_n']").click() except NoSuchElementException: sc.driver.find_element_by_xpath( "//XCUIElementTypeImage[@name='camerta_f']").click() sc.logger.info('点击"素材中心"') try: sc.driver.find_element_by_name("素材中心").click() sc.capture_screen(fun_name, self.img_path) except NoSuchElementException: sc.logger.info('"素材中心"在第二页,需要向左滑动') sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.6, 500) sc.driver.find_element_by_name("素材中心").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“主题”') time.sleep(0.5) sc.driver.find_element_by_name("主题").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载“主题”') btn_download = 'vivavideo material download n' self.template_download('主题', btn_download) sc.logger.info('使用“主题”') self.template_use('主题') time.sleep(2) sc.logger.info('点击“存草稿”按钮') sc.driver.find_element_by_name("存草稿").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击左上角返回按钮退回创作中心') time.sleep(1) sc.driver.find_element_by_name("vivavideo com nav back n").click() sc.logger.info('点击"素材中心"') sc.driver.find_element_by_name("素材中心").click() sc.logger.info('点击"主题"') time.sleep(0.5) sc.driver.find_element_by_name("主题").click() sc.logger.info('删除下载的主题') btn_del = 'vivavideo material delete n' self.theme_manager('主题', btn_del)
def test_edit_sound_03_del(self): """剪辑-配音-删除.""" sc.logger.info('剪辑-配音-删除') fun_name = 'test_edit_sound_del' time.sleep(1) sc.logger.info('点击首页第一个草稿封面') el_draft = sc.driver.find_element_by_xpath( "//*/XCUIElementTypeOther[2]/*/XCUIElementTypeButton") el_draft.click() sc.logger.info('点击"剪辑"') time.sleep(0.5) sc.driver.find_element_by_name("剪辑").click() sc.logger.info('向左滑动') start_x = self.width - self.width // 10 start_bottom = self.height - self.height // 5 sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.8, 800) sc.logger.info('点击"配音"') try: sc.driver.find_element_by_name("配音").click() except NoSuchElementException: sc.logger.info('未找到"配音"按钮,再向左滑动') sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.8, 800) sc.driver.find_element_by_name("配音").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"播放"按钮') sc.driver.find_element_by_name( "vivavideo editor framebar play").click() sc.logger.info('点击"编辑"按钮') try: WebDriverWait( sc.driver, 20).until(lambda el_edit: el_edit.find_element_by_name( "vivavideo tool fx edit n")) sc.logger.info('点击左侧"暂停"按钮') sc.driver.find_element_by_name( "vivavideo editor framebar paus").click() sc.driver.find_element_by_name("vivavideo tool fx edit n").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击删除按钮') sc.driver.find_element_by_name( "vivavideo tool subtitle delete").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击右上角确认按钮') sc.driver.find_element_by_name("xiaoying com ok").click() except NoSuchElementException: sc.logger.error('未找到编辑按钮,请重试') return False
def test_template_06_sticker(self): """素材中心-动画贴纸.""" sc.logger.info('素材中心-动画贴纸') fun_name = 'test_template_sticker' time.sleep(1) sc.logger.info('点击"素材中心"') sc.driver.find_element_by_name("素材中心").click() sc.logger.info('向上滑动') start_x = self.width // 2 start_bottom = self.height - self.height // 5 sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500) sc.logger.info('点击"动画贴纸"') time.sleep(0.5) sc.driver.find_element_by_name("动画贴纸").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载“动画贴纸”') btn_download = 'vivavideo material download n' self.template_download('动画贴纸', btn_download) sc.logger.info('使用“动画贴纸”') self.template_use('动画贴纸') time.sleep(2) sc.logger.info('确认使用该下载的贴纸') sc.driver.find_element_by_name("xiaoying com ok").click() time.sleep(0.5) sc.driver.find_element_by_name("xiaoying com ok").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“存草稿”按钮') time.sleep(1) sc.driver.find_element_by_name("存草稿").click() sc.logger.info('点击左上角返回按钮退回创作中心') time.sleep(1) sc.driver.find_element_by_name("vivavideo com nav back n").click() sc.logger.info('点击"素材中心"') sc.driver.find_element_by_name("素材中心").click() sc.logger.info('向上滑动') sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500) sc.logger.info('点击"动画贴纸"') time.sleep(0.5) sc.driver.find_element_by_name("动画贴纸").click() sc.logger.info('删除下载的贴纸') btn_del = 'vivavideo material delete n' self.theme_manager('动画贴纸', btn_del)
def swipe_left(el_loc, ratio, duration): ''' 以某个元素作为标准点,左滑动 :param el_loc: 某标准点元素 :param ratio: 滑动距离与屏幕的比例,范围0到1 :param duration: 滑动时间,单位ms :return: ''' sc.logger.info('向左滑动') coord_x = el_loc.location.get('x') coord_y = el_loc.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'left', ratio, duration) # 从素材中心向左滑动
def home_enter(): sc.logger.info('点击创作中心主按钮') try: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_accessibility_id( iOS_elements.el_home_create)).click() except TimeoutException: sc.logger.info('当前已经是在创作页面') sc.logger.info('下拉刷新') start_x = width // 2 start_bottom = height // 2 sc.swipe_by_ratio(start_x, start_bottom, 'down', 0.3, 300)
def test_settings_04_other(self): """设置-其他设置""" fun_name = 'test_settings_other' sc.logger.info("其他设置") start_x = self.width // 2 start_bottom = self.height - self.height // 10 sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.8, 500) sc.logger.info('关于小影') sc.driver.find_element_by_name("关于小影").click() sc.driver.find_element_by_name( "vivavideo aboutxiaoying back n").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('赏个好评') sc.driver.find_element_by_name("赏个好评,支持我们").click() time.sleep(2) sc.capture_screen(fun_name, self.img_path) try: sc.driver.find_element_by_name("以后").click() except NoSuchElementException: sc.logger.info("非正式版本,无法跳转苹果商店") sc.logger.info('成为VIP会员') sc.driver.find_element_by_name("成为VIP会员").click() sc.capture_screen(fun_name, self.img_path) sc.driver.find_element_by_name("icon close n").click() sc.logger.info('恢复购买') sc.driver.find_element_by_name("恢复购买").click() sc.capture_screen(fun_name, self.img_path) sc.driver.find_element_by_name("取消").click() # sc.logger.info('推荐小影给好友') # sc.driver.find_element_by_name("推荐小影给好友").click() # sc.capture_screen(fun_name, self.img_path) # sc.driver.find_element_by_xpath("//XCUIElementTypeButton[@name='xiaoying sns icon small qq nor']").click() # time.sleep(2) # sc.driver.find_element_by_name("我的电脑").click() # sc.driver.find_element_by_name("发送").click() # time.sleep(2) # sc.driver.find_element_by_name("返回小影").click() sc.logger.info('清除缓存') sc.driver.find_element_by_name("清除缓存").click() sc.driver.find_element_by_name("清除缓存").click() sc.logger.info('退出设置页面') sc.driver.find_element_by_name("vivavideo com nav back n").click()
def clip_mult_select(): '''多选-删除''' sc.logger.info('工具栏左滑一些') el_t = sc.driver.find_element_by_name("转场") coord_x = el_t.location.get('x') coord_y = el_t.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'left', 0.7, 600) sc.logger.info('删除镜头') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name("删除")).click() sc.logger.info('确认删除') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name("确认")).click()
def test_edit_sound_01_add(self): """剪辑-配音-添加.""" sc.logger.info('剪辑-配音-添加') fun_name = 'test_edit_sound_add' time.sleep(5) sc.logger.info('点击创作中心主按钮') try: sc.driver.find_element_by_xpath( "//XCUIElementTypeImage[@name='camerta_n']").click() except NoSuchElementException: sc.driver.find_element_by_xpath( "//XCUIElementTypeImage[@name='camerta_f']").click() sc.logger.info('点击首页第一个草稿封面') el_draft = sc.driver.find_element_by_xpath( "//*/XCUIElementTypeOther[2]/*/XCUIElementTypeButton") el_draft.click() sc.logger.info('点击"剪辑"') time.sleep(0.5) sc.driver.find_element_by_name("剪辑").click() sc.logger.info('向左滑动') start_x = self.width - self.width // 10 start_bottom = self.height - self.height // 5 sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.8, 800) sc.logger.info('点击"配音"') try: sc.driver.find_element_by_name("配音").click() except NoSuchElementException: sc.logger.info('未找到"配音"按钮,再向左滑动') sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.8, 800) sc.driver.find_element_by_name("配音").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击右侧预置"配音"图标') sc.driver.find_element_by_name("vivavideo tool sound list n").click() sc.logger.info('选择一个"音频"试听') el_sound_name = sc.driver.find_element_by_xpath( "//*/XCUIElementTypeTable/*/XCUIElementTypeButton[2]") el_sound_name.click() sc.logger.info('添加') sc.driver.find_element_by_name("添加").click()
def test_edit_sort(self): """剪辑-排序.""" sc.logger.info('剪辑-排序') fun_name = 'test_edit_sort' time.sleep(1) sc.logger.info('点击首页第一个草稿封面') el_draft = sc.driver.find_element_by_xpath( "//*/XCUIElementTypeOther[2]/*/XCUIElementTypeButton") el_draft.click() sc.logger.info('点击"剪辑"') time.sleep(0.5) sc.driver.find_element_by_name("剪辑").click() sc.logger.info('向左滑动') time.sleep(1) start_x = self.width - self.width // 10 start_bottom = self.height - self.height // 5 for i in range(3): sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.8, 800) sc.logger.info('点击"排序"') sc.driver.find_element_by_name("排序").click() sc.capture_screen(fun_name, self.img_path) # #长按拖动还需要再调试 # sc.logger.info('把特效和动画贴纸位置互换') # try: # el_fx = sc.driver.find_element_by_name("特效") # el_sticker = sc.driver.find_element_by_name("动画贴纸") # actions = TouchAction(sc.driver) # actions.long_press(el_fx,1000).move_to(el_sticker).release().perform() # sc.capture_screen(fun_name, self.img_path) # except Exception as e: # sc.logger.error("排序失败",e) # return False sc.logger.info('点击"完成"保存设置') sc.driver.find_element_by_name("完成").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('存草稿并返回创作页首页') sc.driver.find_element_by_name("存草稿").click() time.sleep(1) sc.driver.find_element_by_name("vivavideo com nav back n").click()
def test_edit_sticker_cancel(self): """剪辑-动画贴纸-放弃.""" sc.logger.info('剪辑-动画贴纸-放弃') fun_name = 'test_edit_sticker_cancel' time.sleep(1) sc.logger.info('点击首页第一个草稿封面') el_draft = sc.driver.find_element_by_xpath( "//*/XCUIElementTypeOther[2]/*/XCUIElementTypeButton") el_draft.click() sc.logger.info('点击"剪辑"') time.sleep(0.5) sc.driver.find_element_by_name("剪辑").click() sc.logger.info('向左滑动') el_collage = sc.driver.find_element_by_name("画中画") coord_x = el_collage.location.get('x') coord_y = el_collage.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'left', 0.6, 800) # 从转场向左滑动 sc.logger.info('点击"动画贴纸"') sc.driver.find_element_by_name("动画贴纸").click() sc.logger.info('点击"添加"按钮') sc.driver.find_element_by_name("vivavideo tool sticker add n").click() sc.logger.info('点击右上角保存') sc.driver.find_element_by_name("xiaoying com ok").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('放弃编辑') sc.driver.find_element_by_name("xiaoying com cancel").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"确认"放弃添加') sc.driver.find_element_by_name("确认").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“存草稿”按钮') time.sleep(3) sc.driver.find_element_by_name("存草稿").click() sc.logger.info('返回创作中心主界面') time.sleep(1) sc.driver.find_element_by_name("vivavideo com nav back n").click()
def test_edit_add_01_clips(self): """剪辑-添加镜头-相册添加.""" sc.logger.info('剪辑-添加镜头-相册添加') fun_name = 'test_edit_add_clips' time.sleep(5) sc.logger.info('点击首页第一个草稿封面') el_draft = sc.driver.find_element_by_xpath( "//*/XCUIElementTypeOther[2]/*/XCUIElementTypeButton") el_draft.click() sc.logger.info('点击"剪辑"') time.sleep(0.5) sc.driver.find_element_by_name("剪辑").click() sc.logger.info('向左滑动') start_x = self.width - self.width // 10 start_bottom = self.height - self.height // 5 sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.8, 800) sc.logger.info('点击"添加镜头"') el_sound = sc.driver.find_element_by_name('配音') coord_x = el_sound.location.get('x') coord_y = el_sound.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'left', 0.8, 800) sc.driver.find_element_by_name("添加镜头").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加视频') el_video = sc.driver.find_element_by_accessibility_id( "vivavideo_tool_gallery_audio_type_video") el_video.click() sc.driver.find_element_by_name("添加 0").click() sc.logger.info('切换到图片') sc.driver.find_element_by_name("视频").click() sc.driver.find_element_by_name("图片").click() sc.logger.info('添加图片') el_img = sc.driver.find_element_by_xpath("//*/XCUIElementTypeImage") el_img.click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"下一步"') sc.driver.find_element_by_name("下一步").click()
def test_home_01_top(self): """首页-VIP&广告""" fun_name = 'test_home_top' time.sleep(5) sc.logger.info('点击创作中心主按钮') try: sc.driver.find_element_by_accessibility_id("camerta_n").click() except NoSuchElementException: sc.driver.find_element_by_accessibility_id("camerta_f").click() sc.logger.info('下拉刷新') start_x = self.width // 2 start_bottom = self.height // 8 sc.swipe_by_ratio(start_x, start_bottom, 'down', 0.5, 500) sc.logger.info('VIP订阅页面展示') sc.driver.find_element_by_xpath( "//*/XCUIElementTypeOther/XCUIElementTypeButton[1]").click() sc.capture_screen(fun_name, self.img_path) sc.driver.find_element_by_xpath( "//XCUIElementTypeButton[@name='icon close n']").click() sc.logger.info('首页广告展示及刷新') sc.driver.find_element_by_xpath( "//*/XCUIElementTypeOther/XCUIElementTypeButton[2]").click() try: WebDriverWait( sc.driver, 15).until(lambda AD_refresh: AD_refresh.find_element_by_name( "xiaoying shuffle change AD btn")) sc.capture_screen(fun_name, self.img_path) sc.driver.find_element_by_name( "xiaoying shuffle change AD btn").click() except TimeoutError as t: sc.logger.error('广告加载超时', t) return False sc.logger.info('关闭广告') sc.driver.find_element_by_name("xiaoying shuffle ad close btn").click()
def test_fans_list(self): """粉丝页面上下滑动测试.""" sc.logger.info('用户空间作品页面上下滑动测试开始') fun_name = 'test_fans_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_preview_download(self): """预览页-下载主题.""" sc.logger.info('预览页-下载主题') fun_name = 'test_preview_download' time.sleep(5) sc.logger.info('点击创作中心主按钮') try: sc.driver.find_element_by_xpath("//XCUIElementTypeImage[@name='camerta_n']").click() except NoSuchElementException: sc.driver.find_element_by_xpath("//XCUIElementTypeImage[@name='camerta_f']").click() sc.logger.info('进入我的工作室') sc.driver.find_element_by_name("更多草稿").click() time.sleep(1) sc.capture_screen(fun_name, self.img_path) sc.logger.info('打开草稿工程') el_draft = sc.driver.find_element_by_xpath("//*/XCUIElementTypeImage[1]") el_draft.click() time.sleep(1) sc.logger.info('点击“主题”按钮') sc.driver.find_element_by_name("vivavideo tool preview filter ").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载“主题”') el_theme_download = sc.driver.find_element_by_accessibility_id("vivavideo_tool_preview_download_n") try: el_theme_download.click() sc.capture_screen(fun_name,self.img_path) except NoSuchElementException: sc.logger.info('当前页面主题已全部下载,需要向左滑动到下一页') start_x = self.width - self.width // 10 start_bottom = self.height - self.height // 5 sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.8, 500) el_theme_download.click() sc.capture_screen(fun_name, self.img_path)
def test_template_08_transition(self): """素材中心-转场.""" sc.logger.info('素材中心-转场') fun_name = 'test_template_transition' time.sleep(1) sc.logger.info('点击"素材中心"') sc.driver.find_element_by_name("素材中心").click() sc.logger.info('向上滑动') start_x = self.width // 2 start_bottom = self.height - self.height // 5 sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500) sc.logger.info('点击"转场"') time.sleep(0.5) try: sc.driver.find_element_by_name("转场").click() except NoSuchElementException: sc.logger.info('仍需要上滑显示转场分类') sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500) sc.driver.find_element_by_name("转场").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载“转场”') btn_download = 'vivavideo material download n' self.template_download('转场', btn_download) sc.logger.info('使用“转场”') self.template_use('转场') time.sleep(2) sc.logger.info('确认使用该下载的转场') sc.driver.find_element_by_name("xiaoying com ok").click() time.sleep(0.5) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“存草稿”按钮') time.sleep(1) sc.driver.find_element_by_name("存草稿").click() sc.logger.info('点击左上角返回按钮退回创作中心') time.sleep(1) sc.driver.find_element_by_name("vivavideo com nav back n").click() sc.logger.info('点击"素材中心"') sc.driver.find_element_by_name("素材中心").click() sc.logger.info('向上滑动') sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500) sc.logger.info('点击"转场"') time.sleep(0.5) sc.driver.find_element_by_name("转场").click() sc.logger.info('删除下载的转场') btn_del = 'vivavideo material delete n' self.theme_manager('转场', btn_del)
def refresh(direct, ratio, duration, times=1): ''' 刷新 :param direct: 滑动方向,只支持'up'、'down'两种方向参数 :param ratio: 滑动距离与屏幕的比例,范围0到1 :param duration:滑动时间,单位ms :param times: 滑动次数,默认1次 :return: ''' start_x = width // 2 start_y = height // 8 start_bottom = height - start_y if direct == 'down': for i in range(times): sc.logger.info('第 %d 次下拉刷新', i) sc.swipe_by_ratio(start_x, start_y, 'down', ratio, duration) time.sleep(.300) elif direct == 'up': for i in range(times): sc.logger.info('第 %d 次上滑动', i) sc.swipe_by_ratio(start_x, start_bottom, 'up', ratio, duration) time.sleep(.300)
def test_preview_03_recommend(self): """音乐库-推荐音乐下载.""" sc.logger.info('音乐库-推荐音乐下载') fun_name = 'test_preview_recommend' sc.logger.info('点击“点击添加配乐”按钮') sc.driver.find_element_by_name("点击添加配乐").click() time.sleep(1) sc.logger.info('点击“推荐”tab') sc.driver.find_element_by_name("推荐").click() sc.logger.info('向上滑动“推荐”音频列表') start_x = self.width // 2 start_bottom = self.height - self.height // 4 sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 500) sc.logger.info('同时下载多个音频') el_download = sc.driver.find_elements_by_name( 'vivavideo material download3 n') for i in range(len(el_download)): el_download[i].click() sc.capture_screen(fun_name, self.img_path)
def test_preview_more(self): """预览页-下载更多.""" sc.logger.info('预览页-下载更多') fun_name = 'test_more_download' sc.logger.info('点击“下载更多”按钮') el_more = sc.driver.find_element_by_xpath( "//XCUIElementTypeImage[@name='vivavideo_tool_camera_store_n']") try: el_more.click() time.sleep(2) sc.capture_screen(fun_name, self.img_path) except NoSuchElementException: sc.logger.info('当前页面主题已全部下载,需要向右滑动切换到第一页') start_x = self.width // 10 start_bottom = self.height - self.height // 5 sc.swipe_by_ratio(start_x, start_bottom, 'right', 0.8, 500) el_more.click() time.sleep(2) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“下载”按钮') el_theme_download = sc.driver.find_element_by_name("vivavideo material download n") el_theme_download.click() time.sleep(5) sc.capture_screen(fun_name,self.img_path) sc.logger.info('点击“左上角”按钮返回预览页') sc.driver.find_element_by_name("vivavideo com nav back n").click() sc.logger.info('点击“存草稿”按钮') sc.driver.find_element_by_name("存草稿").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('返回创作中心主界面') time.sleep(1) sc.driver.find_element_by_name("vivavideo com nav back n").click()
def test_edit_fx_02_del(self): """剪辑-特效-删除.""" sc.logger.info('剪辑-特效-删除') fun_name = 'test_edit_fx_del' time.sleep(5) sc.logger.info('点击首页第一个草稿封面') el_draft = sc.driver.find_element_by_xpath("//*/XCUIElementTypeOther[2]/*/XCUIElementTypeButton") el_draft.click() sc.logger.info('点击"剪辑"') time.sleep(0.5) sc.driver.find_element_by_name("剪辑").click() sc.logger.info('向左滑动') start_x = self.width - self.width // 10 start_bottom = self.height - self.height // 5 sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.8, 800) sc.logger.info('点击"特效"') el_sound = sc.driver.find_element_by_name('配音') coord_x = el_sound.location.get('x') coord_y = el_sound.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'left', 0.8, 800) sc.driver.find_element_by_name("特效").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('向左滑动到添加fx片段位置') fx_edit_x = self.width - self.width // 4 fx_edit_y = self.height - self.height // 4 sc.swipe_by_ratio(fx_edit_x, fx_edit_y, 'left', 0.1, 500) sc.logger.info('点击编辑按钮') sc.driver.find_element_by_name("vivavideo tool fx edit n").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击删除按钮') sc.driver.find_element_by_name("vivavideo tool subtitle delete").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击右上角确认按钮') sc.driver.find_element_by_name("xiaoying com ok").click()
def test_edit_transition(self): """剪辑-转场.""" sc.logger.info('剪辑-转场') fun_name = 'test_edit_transition' time.sleep(5) sc.logger.info('点击首页第一个草稿封面') el_draft = sc.driver.find_element_by_xpath( "//*/XCUIElementTypeOther[2]/*/XCUIElementTypeButton") el_draft.click() sc.logger.info('点击"剪辑"') time.sleep(0.5) sc.driver.find_element_by_name("剪辑").click() sc.logger.info('向左滑动') start_x = self.width - self.width // 10 start_bottom = self.height - self.height // 5 sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.8, 800) sc.logger.info('点击"转场"') sc.driver.find_element_by_name("转场").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('选择一个"转场"') el_tran = sc.driver.find_element_by_xpath( "//*/XCUIElementTypeCollectionView/XCUIElementTypeCell[3]/XCUIElementTypeOther/XCUIElementTypeImage" ) el_tran.click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('切回"无转场"') time.sleep(0.5) el_empty = sc.driver.find_element_by_accessibility_id( "XiaoYingResource.bundle/vivavideo_tool_camera_none_n") el_empty.click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“下载更多”按钮') time.sleep(0.5) el_more = sc.driver.find_element_by_accessibility_id( "XiaoYingResource.bundle/vivavideo_tool_camera_store_n") el_more.click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“左上角”返回预览页') time.sleep(0.5) sc.driver.find_element_by_name("vivavideo com nav back n").click() sc.logger.info('点击“多选”') sc.driver.find_element_by_name("多选").click() sc.logger.info('点击“全选”') sc.driver.find_element_by_name("全选").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“随机”') sc.driver.find_element_by_name("随机").click() sc.logger.info('点击“确认”') sc.driver.find_element_by_name("确认").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“右上角”保存') sc.driver.find_element_by_name("xiaoying com ok").click() # sc.logger.info('再次点击"转场"') # sc.driver.find_element_by_name("转场").click() # sc.logger.info('切回"无转场"') # el_empty = sc.driver.find_element_by_accessibility_id( # "XiaoYingResource.bundle/vivavideo_tool_camera_none_n") # el_empty.click() # sc.capture_screen(fun_name, self.img_path) # # sc.logger.info('点击“左上角X”取消') # sc.driver.find_element_by_name("xiaoying com cancel").click() # sc.capture_screen(fun_name, self.img_path) # # sc.logger.info('确认取消') # sc.driver.find_element_by_name("确认").click() # time.sleep(3) sc.logger.info('存草稿并返回创作页首页') sc.driver.find_element_by_name("存草稿").click() time.sleep(1) sc.driver.find_element_by_name("vivavideo com nav back n").click()
def test_template_07_giphy(self): """GIPHY-下载.""" sc.logger.info('素材中心-GIPHY') fun_name = 'test_template_giphy' time.sleep(1) sc.logger.info('点击"素材中心"') sc.driver.find_element_by_name("素材中心").click() sc.logger.info('向上滑动') start_x = self.width // 2 start_bottom = self.height - self.height // 5 sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500) sc.logger.info('点击"动画贴纸"') time.sleep(0.5) sc.driver.find_element_by_name("动画贴纸").click() sc.logger.info('切换到"GIF"分类') sc.driver.find_element_by_name("GIF").click() time.sleep(3) sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载“GIF贴纸”') btn_download = '下载' self.template_download('GIF贴纸', btn_download) sc.logger.info('使用“GIF贴纸”') self.template_use('GIF贴纸') time.sleep(2) sc.logger.info('确认使用该下载的GIF贴纸') sc.driver.find_element_by_name("xiaoying com ok").click() time.sleep(0.5) sc.driver.find_element_by_name("xiaoying com ok").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“存草稿”按钮') time.sleep(1) sc.driver.find_element_by_name("存草稿").click() sc.logger.info('点击左上角返回按钮退回创作中心') time.sleep(1) sc.driver.find_element_by_name("vivavideo com nav back n").click() sc.logger.info('点击"素材中心"') sc.driver.find_element_by_name("素材中心").click() sc.logger.info('向上滑动') sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500) sc.logger.info('点击"动画贴纸"') time.sleep(0.5) sc.driver.find_element_by_name("动画贴纸").click() sc.logger.info('切换到"GIF"分类') sc.driver.find_element_by_name("GIF").click() time.sleep(3) sc.logger.info('删除下载的GIF贴纸') btn_del = '删除' self.theme_manager('GIF贴纸', btn_del)
def test_template_05_text(self): """素材中心-字幕.""" sc.logger.info('素材中心-字幕') fun_name = 'test_template_text' time.sleep(1) sc.logger.info('点击"素材中心"') sc.driver.find_element_by_name("素材中心").click() sc.logger.info('向上滑动') start_x = self.width // 2 start_bottom = self.height - self.height // 5 sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"字幕"') time.sleep(0.5) sc.driver.find_element_by_name("字幕").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载“字幕”') btn_download = 'vivavideo material download n' self.template_download('字幕', btn_download) sc.logger.info('使用“字幕”') self.template_use('字幕') time.sleep(2) sc.logger.info('确认使用该下载的字幕') sc.driver.find_element_by_name("vivavideo editor common ok").click() time.sleep(0.5) sc.logger.info('截取使用该字体的片段') try: WebDriverWait( sc.driver, 300).until(lambda theme_use: theme_use.find_element_by_name( "vivavideo editor common ok")) sc.capture_screen(fun_name, self.img_path) sc.driver.find_element_by_name( "vivavideo editor common ok").click() except TimeoutError as t: sc.logger.error('视频时长超出300s,尚未完成添加字幕,试一试使用时长较短的视频。', t) return False sc.logger.info('点击“存草稿”按钮') time.sleep(1) sc.driver.find_element_by_name("存草稿").click() sc.logger.info('点击左上角返回按钮退回创作中心') time.sleep(1) sc.driver.find_element_by_name("vivavideo com nav back n").click() sc.logger.info('点击"素材中心"') sc.driver.find_element_by_name("素材中心").click() sc.logger.info('向上滑动') sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500) sc.logger.info('点击"字幕"') time.sleep(0.5) sc.driver.find_element_by_name("字幕").click() sc.logger.info('删除下载的字幕') btn_del = 'vivavideo material delete n' self.theme_manager('字幕', btn_del)
def test_edit_sticker_add(self): """剪辑-动画贴纸-添加.""" sc.logger.info('剪辑-动画贴纸-添加') fun_name = 'test_edit_sticker_add' time.sleep(5) sc.logger.info('点击首页第一个草稿封面') el_draft = sc.driver.find_element_by_xpath("//*/XCUIElementTypeOther[2]/*/XCUIElementTypeButton") el_draft.click() sc.logger.info('点击"剪辑"') time.sleep(0.5) sc.driver.find_element_by_name("剪辑").click() sc.logger.info('向左滑动') el_collage = sc.driver.find_element_by_name("画中画") coord_x = el_collage.location.get('x') coord_y = el_collage.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'left', 0.6, 800) # 从转场向左滑动 sc.logger.info('点击"动画贴纸"') sc.driver.find_element_by_name("动画贴纸").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"添加"按钮') sc.driver.find_element_by_name("vivavideo tool sticker add n").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('选择一个"贴纸"添加') el_sticker = sc.driver.find_element_by_xpath( "//*/XCUIElementTypeCollectionView[2]/*/XCUIElementTypeOther/XCUIElementTypeImage") el_sticker.click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('镜像"贴纸"') sc.driver.find_element_by_accessibility_id( "XiaoYingResource.bundle/vivavideo_tool_subtitle_flip_n").click() sc.logger.info('切换"贴纸"分类') el_sticker_type = sc.driver.find_element_by_xpath( "//*/XCUIElementTypeCollectionView[1]/*/XCUIElementTypeOther/XCUIElementTypeImage") el_sticker_type.click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载该分类"贴纸"') try: sc.driver.find_element_by_name("免费下载").click() except NoSuchElementException: sc.logger.info('该分类"贴纸"已下载') sc.logger.info('点击GIF图标') sc.driver.find_element_by_name("GIF").click() time.sleep(3) sc.capture_screen(fun_name, self.img_path) sc.logger.info('返回贴纸添加页面') sc.driver.find_element_by_name('vivavideo com nav back n').click() sc.logger.info('点击下载更多') sc.driver.find_element_by_name("xiaoying itembar down more").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('返回贴纸添加页面') sc.driver.find_element_by_name('vivavideo com nav back n').click() sc.logger.info('点击右上角保存') el_ok_btn = sc.driver.find_element_by_name("xiaoying com ok") for i in range(2): el_ok_btn.click() sc.capture_screen(fun_name,self.img_path) sc.logger.info('点击“存草稿”按钮') sc.driver.find_element_by_name("存草稿").click() sc.logger.info('返回创作中心主界面') time.sleep(1) sc.driver.find_element_by_name("vivavideo com nav back n").click()
def test_settings_03_feedback(self): """设置-意见反馈""" fun_name = 'test_settings_feedback' sc.logger.info("意见反馈") # width = sp.get_window_size()['width'] # heightt = sp.get_window_size()['heightt'] # sp.swipe(width / 2, heightt * 9 / 10, width / 2, heightt * 1 / 10, 500) start_x = self.width // 2 start_bottom = self.height - self.height // 10 sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.8, 500) sc.logger.info("进入反馈页面") sc.driver.find_element_by_name("意见反馈").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info("新建反馈") sc.driver.find_element_by_name("+ 新建反馈").click() time.sleep(2) sc.capture_screen(fun_name, self.img_path) sc.logger.info("填写问题") el_question = sc.driver.find_element_by_ios_predicate( "type == 'XCUIElementTypeTextView'") el_question.clear() el_question.send_keys("just for ios test") time.sleep(1) try: sc.driver.find_element_by_xpath( "//XCUIElementTypeButton[@name='Done']").click() except NoSuchElementException: sc.logger.info("当前键盘为中文键盘") sc.driver.find_element_by_xpath("完成").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info("选择问题分类") time.sleep(1) sc.driver.find_element_by_name("vivavideo_common_pulldown_n").click() sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.2, 500) sc.driver.find_element_by_xpath( "//XCUIElementTypeButton[@name='完成']").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info("提供截图") sc.driver.find_element_by_xpath( "//XCUIElementTypeImage[@name='icon_add_nrm']").click() time.sleep(1) sc.driver.find_element_by_name("取消").click() sc.logger.info("输入联系方式") el_contact = sc.driver.find_elements_by_ios_predicate( "type == 'XCUIElementTypeTextField'") for contact in el_contact: if contact.text == u'QQ': contact.send_keys("245603638") break for contact in el_contact: if contact.text == u'手机号': contact.send_keys("15857154810") break sc.capture_screen(fun_name, self.img_path) sc.logger.info("提交反馈") sc.driver.find_element_by_xpath( "//XCUIElementTypeButton[@name='Done']").click() sc.driver.find_element_by_xpath( "//XCUIElementTypeButton[@name='提交']").click() sc.capture_screen(fun_name, self.img_path) sc.driver.find_element_by_name("vivavideo com nav back n").click()
def test_music_01_shot(self): """拍摄-音乐视频(3:4).""" fun_name = 'test_music_shot' time.sleep(5) sc.logger.info('点击创作中心主按钮') try: sc.driver.find_element_by_accessibility_id("camerta_n").click() except NoSuchElementException: sc.driver.find_element_by_accessibility_id("camerta_f").click() sc.logger.info('向左滑动') start_x = self.width - self.width // 5 start_bottom = self.height // 2 sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.6, 500) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击音乐视频') sc.driver.find_element_by_name("音乐视频").click() sc.logger.info('跳过订阅页面') try: sc.driver.find_element_by_name("跳过").click() time.sleep(1) sc.driver.find_element_by_name("音乐视频").click() except NoSuchElementException: sc.logger.info('已跳过订阅页面') sc.logger.info("授权小影访问相机和麦克风") try: sc.driver.find_element_by_name("好").click() # 授权访问相机 time.sleep(1) sc.driver.find_element_by_name("好").click() # 授权访问麦克风 time.sleep(1) except NoSuchElementException: sc.logger.info("已授权") sc.logger.info('切换到3:4拍摄') time.sleep(1) el_ful = sc.driver.find_element_by_name( "vivavideo camera tool icon ful") el_ful.click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“点击添加配乐”按钮') sc.driver.find_element_by_name("点击添加配乐").click() time.sleep(2) sc.logger.info('点击下载按钮') el_download = sc.driver.find_element_by_name( 'vivavideo material download3 n') el_download.click() sc.capture_screen(fun_name, self.img_path) time.sleep(10) sc.logger.info('点击第一首已下载音频试听') el_music_name = sc.driver.find_element_by_xpath( "//*/XCUIElementTypeTable//*/XCUIElementTypeButton[2]") try: el_music_name.click() except NoSuchElementException: sc.logger.error('音频下载未完成,继续等待5s') time.sleep(5) el_music_name.click() sc.logger.info('点击播放/暂停按钮') sc.driver.find_element_by_name("vivavideo tool camera pause n").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“添加”按钮') sc.driver.find_element_by_name('添加').click() sc.logger.info('开始录制') # 点拍5s el_capture = sc.driver.find_element_by_xpath( "//*/XCUIElementTypeOther[5]/XCUIElementTypeOther/XCUIElementTypeOther[1]" ) el_capture.click() time.sleep(5) sc.logger.info('拍摄5s后点击录制按钮停止拍摄') el_capture.click() sc.logger.info('录制完成,进入预览页') try: sc.logger.info('点击确认按钮') sc.driver.find_element_by_name( "vivavideo camera tool icon nex").click() except NoSuchElementException: sc.logger.info('音乐时长较短,已自动跳转预览页') sc.logger.info('点击“存草稿”按钮') time.sleep(0.5) sc.driver.find_element_by_name("存草稿").click() sc.logger.info('点击左上角返回按钮退回创作中心') time.sleep(1) sc.driver.find_element_by_name("vivavideo com nav back n").click()
def test_music_01_shot(self): """拍摄-音乐视频(3:4).""" sc.logger.info('拍摄-音乐视频(3:4)') fun_name = 'test_music_shot' sc.logger.info('点击音乐视频') ba.home_first_click('音乐视频') # 第一次从次要功能位打开音乐视频,拍摄按钮是另一个控件,所以先关闭再打开 sc.logger.info('退出拍摄') time.sleep(0.5) WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name( iOS_elements.el_cam_close)).click() # 退回首页后,常无法再次获取到音乐视频控件,此处重启一次app sc.logger.info('重启app') sc.driver.close_app() time.sleep(1) sc.driver.launch_app() sc.logger.info('点击音乐视频') ba.home_first_click('音乐视频') sc.logger.info('切换到3:4拍摄') time.sleep(1) ba.find_element_click('name', 5, iOS_elements.el_ful) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“点击添加配乐”按钮') sc.driver.find_element_by_name("点击添加配乐").click() time.sleep(2) sc.logger.info('下拉刷新') start_x = self.width // 2 start_bottom = self.height // 5 sc.swipe_by_ratio(start_x, start_bottom, 'down', 0.3, 300) sc.logger.info('下载音乐') music_list = sc.driver.find_elements_by_name( iOS_elements.el_mus_download) # music_list.pop(0) if len(music_list) >= 4: music_list = music_list[1:4] for el_music in music_list: el_music.click() time.sleep(0.5) time.sleep(10) sc.logger.info('点击一首已下载音频试听') WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_play)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“添加”按钮') time.sleep(5) WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_name('添加')).click() sc.capture_screen(fun_name, self.img_path) # 点拍 sc.logger.info('拍摄一段5s的视频') btn_rec = WebDriverWait(sc.driver, 10).until( lambda x: x.find_element_by_xpath(iOS_elements.el_cp_music)) ba.video_capture('点拍', btn_rec, 5) sc.logger.info('取消限制弹窗') try: WebDriverWait(sc.driver, 3, 1).until(lambda x: x.find_element_by_name( iOS_elements.el_cancel)).click() except TimeoutException: sc.logger.info('限制弹窗已取消') sc.logger.info('返回创作页') ba.back_to_home() sc.logger.info('拍摄-音乐视频(3:4)完成')