class TestEditCreate(TestCase): """edit创建视频的测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() # sc.driver.getPageSource() def test_create_draft(self): """创建一个草稿视频.""" sc.logger.info('创建一个草稿视频') fun_name = 'test_create_craft' sc.logger.info('点击创作中心主按钮') ba.home_enter() sc.logger.info('点击“视频剪辑”按钮') try: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_home_edit)).click() except TimeoutException: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.home_edit)).click() sc.logger.info('添加视频') ba.gallery_clip_add('视频', 3) sc.capture_screen(fun_name, self.img_path) sc.logger.info('切换到图片') sc.driver.find_element_by_name("视频").click() sc.driver.find_element_by_name("图片").click() sc.logger.info('添加图片') ba.gallery_clip_add('图片', 3) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击下一步') ba.find_element_click('predicate', 10, iOS_elements.el_gallery_next) sc.logger.info('点击“存草稿”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("存草稿")).click() sc.logger.info('创建一个草稿视频完成')
class TestEditClip(TestCase): """镜头编辑相关操作的测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_clip_edit_function(self): """剪辑-镜头编辑-功能遍历.""" sc.logger.info('剪辑-镜头编辑-功能遍历') fun_name = 'test_clip_edit_function' sc.logger.info('点击创作中心主按钮') ba.home_enter() sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_home_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('功能遍历') ba.clip_fun_loop() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“存草稿”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("存草稿")).click() sc.logger.info('剪辑-镜头编辑-功能遍历完成')
class TestCameraCancel(TestCase): """camera取消操作相关的测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_cancel_01_shot(self): """拍摄-拍摄页放弃.""" sc.logger.info('拍摄-拍摄页放弃') fun_name = 'test_cancel_shot' sc.logger.info('点击创作中心主按钮') ba.home_enter() sc.logger.info('点击“美颜趣拍”') WebDriverWait( sc.driver, 5).until(lambda x: x.find_element_by_name('美颜趣拍')).click() sc.logger.info('切换拍摄模式:自拍美颜->高清相机') el_normal = "高清相机" ba.find_element_click('name', 5, el_normal) sc.capture_screen(fun_name, self.img_path) # 点拍 sc.logger.info('开始录制') el_capture = WebDriverWait(sc.driver, 10).until( lambda x: x.find_element_by_xpath(iOS_elements.el_cp_normal)) el_capture.click() sc.capture_screen(fun_name, self.img_path) time.sleep(5) sc.logger.info('录制5s后点击录制按钮停止录制') el_capture.click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击左上角取消按钮') ba.find_element_click('name', 5, iOS_elements.el_cam_close) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“丢弃”按钮') ba.find_element_click('name', 5, iOS_elements.el_discard) sc.logger.info('拍摄-拍摄页放弃测试完成') def test_cancel_02_save(self): """拍摄-拍摄页保存.""" sc.logger.info('拍摄-拍摄页保存') fun_name = 'test_cancel_save' sc.logger.info('点击“美颜趣拍”') WebDriverWait( sc.driver, 5).until(lambda x: x.find_element_by_name('美颜趣拍')).click() sc.logger.info('切换拍摄模式:自拍美颜->高清相机') el_normal = "高清相机" ba.find_element_click('name', 5, el_normal) sc.capture_screen(fun_name, self.img_path) # 点拍 sc.logger.info('录制两段5s的视频') el_capture = WebDriverWait(sc.driver, 10).until( lambda x: x.find_element_by_xpath(iOS_elements.el_cp_normal)) for i in range(2): el_capture.click() sc.capture_screen(fun_name, self.img_path) time.sleep(5) el_capture.click() time.sleep(1) sc.logger.info('撤销第二段视频') for i in range(2): sc.driver.find_element_by_name("撤销").click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击左上角取消按钮') ba.find_element_click('name', 5, iOS_elements.el_cam_close) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“保存”按钮') ba.find_element_click('name', 5, iOS_elements.el_save) sc.logger.info('拍摄-拍摄页保存测试完成')
class TestEditCollage(TestCase): """编辑页面画中画的基本操作测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_edit_collage_01_img(self): """剪辑-画中画-图片添加.""" sc.logger.info('剪辑-画中画-图片添加') fun_name = 'test_edit_collage_img' sc.logger.info('打开一个草稿视频') ba.home_first_click('更多草稿') sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“素材·效果”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("素材·效果")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"画中画"') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('画中画')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加图片画中画') ba.collage_add('图片') sc.capture_screen(fun_name, self.img_path) sc.logger.info('确认添加') ba.effect_add_confirm() sc.logger.info('剪辑-画中画-图片添加测试完成') def test_edit_collage_02_video(self): """剪辑-画中画-视频添加.""" sc.logger.info('剪辑-画中画-视频添加') fun_name = 'test_edit_collage_video' sc.logger.info('点击"画中画"') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('画中画')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加视频画中画') ba.collage_add('视频') sc.capture_screen(fun_name, self.img_path) sc.logger.info('确认添加') ba.effect_add_confirm() sc.capture_screen(fun_name, self.img_path) sc.logger.info('剪辑-画中画-视频添加测试完成') def test_edit_collage_03_gif(self): """剪辑-画中画-GIF添加.""" sc.logger.info('剪辑-画中画-GIF添加') fun_name = 'test_edit_collage_gif' sc.logger.info('点击"画中画"') time.sleep(0.5) WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('画中画')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加gif画中画') ba.collage_add('GIF') sc.capture_screen(fun_name, self.img_path) sc.logger.info('确认添加') ba.effect_add_confirm() sc.capture_screen(fun_name, self.img_path) sc.logger.info('剪辑-画中画-GIF搜索测试完成') def test_edit_collage_04_cancel(self): """剪辑-画中画-放弃.""" sc.logger.info('剪辑-画中画-放弃') fun_name = 'test_edit_collage_cancel' sc.logger.info('点击"画中画"') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('画中画')).click() sc.logger.info('添加图片画中画') ba.collage_add('图片') sc.capture_screen(fun_name, self.img_path) sc.logger.info('取消添加') ba.effect_add_cancel() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“存草稿”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("存草稿")).click() sc.logger.info('剪辑-画中画-放弃测试完成')
class TestEditMusic(TestCase): """音乐相关操作测试测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_edit_music_01(self): """剪辑-多段配乐-添加.""" sc.logger.info('剪辑-多段配乐-添加') fun_name = 'test_music_add' sc.logger.info('打开一个草稿视频') ba.home_first_click('更多草稿') sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“素材·效果”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("素材·效果")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info("添加一段'配乐'") ba.effects_music() sc.capture_screen(fun_name, self.img_path) sc.logger.info('确认添加') ba.effect_add_confirm() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“存草稿”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("存草稿")).click() try: WebDriverWait(sc.driver, 10, 1).until(lambda el: el.find_element_by_xpath( '//XCUIElementTypeButton[@name="1"]')).click() except TimeoutException: sc.logger.info('返回首页后,无广告弹出') sc.logger.info('剪辑-多段配乐-添加测试完成') def test_edit_music_02(self): """剪辑-多段配乐-删除.""" sc.logger.info('剪辑-多段配乐-删除') fun_name = 'test_camera_music_del' sc.logger.info('点击草稿封面') try: ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) except: sc.logger.info('关闭广告') WebDriverWait(sc.driver, 5, 1).until(lambda el: el.find_element_by_name( iOS_elements.btn_ad_clo)).click() ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“素材·效果”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("素材·效果")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"多段配乐"') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('多段配乐')).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('确定') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name( iOS_elements.el_confirm_btn)).click() sc.logger.info('剪辑-多段配乐-删除测试完成') def test_edit_music_03(self): """剪辑-多段配乐-放弃.""" sc.logger.info('剪辑-多段配乐-放弃') fun_name = 'test_camera_music_cancel' sc.logger.info('点击"多段配乐"') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('多段配乐')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info("添加一段'配乐'") ba.effects_music() sc.capture_screen(fun_name, self.img_path) sc.logger.info('取消添加') ba.effect_add_cancel() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“存草稿”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("存草稿")).click() sc.logger.info('剪辑-多段配乐-放弃测试完成')
class TestPrivacy(TestCase): """权限获取测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_privacy_album(self): """权限获取""" sc.logger.info('权限获取') fun_name = 'test_privacy_album' sc.logger.info('点击创作中心主按钮') ba.home_enter() sc.logger.info('点击“视频剪辑”按钮') try: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_home_edit)).click() except TimeoutException: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.home_edit)).click() try: sc.driver.find_element_by_name("跳过").click() sc.capture_screen(fun_name, self.img_path) except NoSuchElementException: sc.logger.info('已跳过订阅页面') sc.logger.info("授权小影访问相册和媒体资料") try: WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("好")).click() sc.capture_screen(fun_name, self.img_path) WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("好")).click() except TimeoutException: sc.logger.info("已授权") sc.logger.info('返回首页') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name( iOS_elements.gallery_back)).click() sc.logger.info('相册授权测试完成') def test_privacy_cam(self): """权限获取""" sc.logger.info('权限获取') fun_name = 'test_privacy_cam' sc.logger.info('点击“高清拍摄”按钮') try: WebDriverWait(sc.driver, 3, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.home_camera)).click() except TimeoutException: WebDriverWait(sc.driver, 3, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_home_camera)).click() sc.logger.info("授权小影访问相机和麦克风") try: WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("好")).click() sc.capture_screen(fun_name, self.img_path) WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("好")).click() except TimeoutException: sc.logger.info("已授权") sc.logger.info('返回首页') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name( iOS_elements.el_cam_close)).click() sc.logger.info('拍摄授权测试完成')
class TestEditFX(TestCase): """特效的基本操作测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_edit_fx_01(self): """剪辑-特效下载.""" sc.logger.info('剪辑-特效下载') fun_name = 'test_edit_fx_download' sc.logger.info('点击创作中心主按钮') ba.home_enter() sc.logger.info('点击视频剪辑') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_xpath(iOS_elements.el_home_edit)).click() sc.logger.info('添加视频') ba.gallery_clip_add('视频', 2) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击下一步') ba.find_element_click('predicate', 10, iOS_elements.el_gallery_next) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“效果”') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name("素材·效果")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"特效"') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('特效')).click() sc.logger.info('剪辑-特效下载测试完成') def test_edit_fx_02(self): """剪辑-特效使用.""" sc.logger.info('剪辑-特效使用') fun_name = 'test_edit_fx_use' el_more = 'xiaoying itembar down more' try: WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(el_more)) except TimeoutException: sc.logger.info('当前位置已添加过"特效"') sc.logger.info('点击屏幕弹出已添加的特效编辑页面') ba.screen_tap('特效', 200, 200) sc.logger.info('删除') sc.driver.find_element_by_name('删除').click() sc.logger.info('添加') WebDriverWait(sc.driver, 10, 1).until( lambda x: x.find_element_by_name('添加')).click() sc.logger.info('下载“特效”') fx_list = sc.driver.find_elements_by_xpath(iOS_elements.el_fx_download) if fx_list: for fx in fx_list: fx.click() time.sleep(5) else: pass sc.logger.info('使用"特效"') sc.driver.find_element_by_xpath(iOS_elements.el_fx_cho).click() sc.logger.info('确认添加') sc.driver.find_element_by_name(iOS_elements.el_confirm_btn).click() time.sleep(5) sc.logger.info('再次添加特效') WebDriverWait(sc.driver, 3, 1).until( lambda x: x.find_element_by_name('添加')).click() WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(el_more)) sc.logger.info('使用"特效"') sc.driver.find_element_by_xpath(iOS_elements.el_fx_cho).click() sc.logger.info('确认添加') sc.driver.find_element_by_name(iOS_elements.el_confirm_btn).click() time.sleep(5) sc.driver.find_element_by_name(iOS_elements.el_confirm_btn).click() sc.logger.info('点击“存草稿”按钮') WebDriverWait(sc.driver, 5, 1).until( lambda el: el.find_element_by_name("存草稿")).click() try: WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_xpath('//XCUIElementTypeButton[@name="1"]')).click() except TimeoutException: sc.logger.info('返回首页后,无广告弹出') sc.logger.info('剪辑-特效使用测试完成')
class TestEditFilter(TestCase): """编辑滤镜的基本操作测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_edit_filter(self): """剪辑-滤镜下载/使用.""" sc.logger.info('剪辑-滤镜下载/使用') fun_name = 'test_edit_filter' start_x = self.width // 2 start_y = self.height // 8 start_bottom = self.height - start_y sc.logger.info('打开一个草稿视频') ba.home_first_click('更多草稿') sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“镜头编辑”') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name("镜头编辑")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"滤镜"') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name("滤镜")).click() sc.logger.info('下载更多') try: sc.driver.find_element_by_name('下载更多').click() except NoSuchElementException: sc.logger.info('右滑一些,再选择下载更多') el_fliter = sc.driver.find_element_by_name("缓流") coord_x = el_fliter.location.get('x') coord_y = el_fliter.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'right', 0.5, 500) sc.driver.find_element_by_name('下载更多').click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下拉刷新') ba.refresh('down', 0.3, 500, 1) sc.logger.info('下载并使用滤镜') while True: try: sc.driver.find_element_by_name(iOS_elements.el_store_download2).click() break except NoSuchElementException: sc.logger.info('当前页面已无未下载主题') sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300) sc.logger.info('使用滤镜') WebDriverWait(sc.driver, 20, 1).until( lambda x: x.find_element_by_name("使用")).click() WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name("应用于全部镜头")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“确认”') sc.driver.find_element_by_name(iOS_elements.el_confirm_btn).click() sc.logger.info('点击“存草稿”按钮') WebDriverWait(sc.driver, 5, 1).until( lambda el: el.find_element_by_name("存草稿")).click() sc.logger.info('剪辑-滤镜下载/使用测试完成')
class TestProportion(TestCase): """比例与背景的基本操作测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_proportion_01(self): '''剪辑-切换到比例.''' sc.logger.info('剪辑-切换到比例') fun_name = 'test_edit_proportion' sc.logger.info('打开一个草稿视频') ba.home_first_click('更多草稿') sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“镜头编辑”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("镜头编辑")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"比例"') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("比例和背景")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('切换到"比例tab"') try: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name( iOS_elements.btn_bg_pro)).click() sc.capture_screen(fun_name, self.img_path) except TimeoutException: sc.logger.info('已经在"比例tab"') sc.logger.info('剪辑-进入比例页面测试完成') def test_proportion_02(self): '''剪辑-切换1:1比例.''' sc.logger.info('剪辑-切换1:1比例') fun_name = 'test_edit_proportion_1:1' sc.logger.info('选择"1:1 比例"') el_proportion = "vivavideo_edit_icon_proportion_1_1" ba.clip_proportion(el_proportion) sc.capture_screen(fun_name, self.img_path) sc.logger.info('剪辑-切换1:1比例测试完成') def test_proportion_03(self): '''剪辑-多选删除.''' sc.logger.info('剪辑-多选删除') fun_name = 'test_edit_clip_del' sc.logger.info('进入多选') try: WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_xpath( '//XCUIElementTypeStaticText[@name="点击多选"]')).click() sc.capture_screen(fun_name, self.img_path) except TimeoutException: sc.logger.info('当前工程只有一个镜头,无法进入多选') return True sc.logger.info('多选-删除') ba.clip_mult_select() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“存草稿”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("存草稿")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('剪辑-多选删除测试完成')
class TestCameraNormal(TestCase): """camera的基本操作测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] def setUp(self): sc.driver.launch_app() time.sleep(3) def tearDown(self): time.sleep(3) sc.driver.close_app() def test_normal_01_filter(self): """拍摄-滤镜下载.""" sc.logger.info('拍摄-滤镜下载') fun_name = 'test_normal_filter_download' start_x = self.width // 2 start_y = self.height // 8 start_bottom = self.height - start_y sc.logger.info('点击创作中心主按钮') ba.home_enter() sc.logger.info('点击“高清拍摄”按钮') try: WebDriverWait(sc.driver, 3, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.home_camera)).click() except TimeoutException: WebDriverWait(sc.driver, 3, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_home_camera)).click() sc.logger.info('点击滤镜图标') time.sleep(1) try: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name( iOS_elements.el_filter_icon)).click() except TimeoutException: sc.logger.info('滤镜列表已自动弹出') sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载滤镜') try: sc.logger.info('点击下载按钮') sc.driver.find_element_by_xpath( iOS_elements.el_filter_download).click() sc.capture_screen(fun_name, self.img_path) try: sc.driver.find_element_by_name('取消').click() except NoSuchElementException: sc.logger.info('该滤镜不是解锁滤镜') except NoSuchElementException: sc.logger.info('当前页面已无未下载滤镜') sc.logger.info('下载更多') try: time.sleep(0.5) sc.driver.find_element_by_name(iOS_elements.el_filter_more).click() sc.capture_screen(fun_name, self.img_path) except NoSuchElementException: sc.logger.info('当前页面是vip订阅页面') sc.driver.find_element_by_name(iOS_elements.el_vip_close).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('重新点击下载更多') sc.driver.find_element_by_name(iOS_elements.el_filter_more).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载并使用滤镜') while True: try: sc.driver.find_element_by_name( iOS_elements.el_store_download2).click() break except NoSuchElementException: sc.logger.info('当前页面已无未下载主题') sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300) sc.logger.info('使用滤镜') WebDriverWait(sc.driver, 20, 1).until(lambda x: x.find_element_by_name("使用")).click() sc.logger.info('退出拍摄') ba.find_element_click('name', 5, iOS_elements.el_cam_close) sc.logger.info('拍摄-滤镜下载测试完成') def test_normal_02_settings(self): """拍摄-设置相关.""" sc.logger.info('拍摄-设置相关') fun_name = 'test_camera_normal_settings' sc.logger.info('点击“美颜趣拍”') WebDriverWait( sc.driver, 5).until(lambda x: x.find_element_by_name('美颜趣拍')).click() sc.logger.info('切换拍摄模式:自拍美颜->高清相机') el_normal = "高清相机" ba.find_element_click('name', 5, el_normal) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击设置按钮') time.sleep(1) sc.driver.find_element_by_name(iOS_elements.el_cam_setting).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('闪光灯-开') try: ba.find_element_click('name', 5, iOS_elements.el_cam_flash) sc.capture_screen(fun_name, self.img_path) except TimeoutException: sc.logger.info('当前为前置拍摄,无闪光灯选项') sc.logger.info('网格显示') ba.find_element_click('name', 5, iOS_elements.el_cam_grid) sc.capture_screen(fun_name, self.img_path) sc.logger.info('倒计时') for i in range(4): ba.find_element_click('name', 5, iOS_elements.el_cam_time) sc.capture_screen(fun_name, self.img_path) sc.logger.info('退出设置选项') ba.find_element_click('name', 5, iOS_elements.el_cam_setting) sc.logger.info('前后置切换') ba.find_element_click('name', 5, iOS_elements.el_cam_switch) sc.capture_screen(fun_name, self.img_path) sc.logger.info('视频尺寸,全屏切换到3:4') ba.find_element_click('name', 5, iOS_elements.el_ful) sc.capture_screen(fun_name, self.img_path) sc.logger.info('视频尺寸,3:4切换到1:1') ba.find_element_click('name', 5, iOS_elements.el_fou) sc.capture_screen(fun_name, self.img_path) sc.logger.info('视频尺寸,1:1切换到全屏') ba.find_element_click('name', 5, iOS_elements.el_one) sc.capture_screen(fun_name, self.img_path) sc.logger.info('切换拍摄模式:高清相机->自拍美颜') el_self = "自拍美颜" el_normal = "高清相机" el_music = "音乐视频" ba.find_element_click('name', 5, el_self) sc.capture_screen(fun_name, self.img_path) sc.logger.info('切换拍摄模式:自拍美颜->高清相机') ba.find_element_click('name', 5, el_normal) sc.capture_screen(fun_name, self.img_path) sc.logger.info('切换拍摄模式:高清相机->音乐视频') ba.find_element_click('name', 5, el_music) sc.capture_screen(fun_name, self.img_path) sc.logger.info('退出拍摄') ba.find_element_click('name', 5, iOS_elements.el_cam_close) sc.logger.info('拍摄-设置相关测试完成') def test_normal_03_shot(self): """拍摄-高清相机(前置1:1).""" sc.logger.info('拍摄-高清相机(前置1:1)') fun_name = 'test_camera_normal_shot' sc.logger.info('点击“美颜趣拍”') WebDriverWait( sc.driver, 5).until(lambda x: x.find_element_by_name('美颜趣拍')).click() sc.logger.info('切换拍摄模式:自拍美颜->高清相机') el_normal = "高清相机" ba.find_element_click('name', 5, el_normal) sc.capture_screen(fun_name, self.img_path) sc.logger.info('切换到前置') time.sleep(1) sc.driver.find_element_by_name(iOS_elements.el_cam_switch).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('切换到1:1') ba.find_element_click('name', 5, iOS_elements.el_ful) ba.find_element_click('name', 5, iOS_elements.el_fou) 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_normal)) 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('点击“存草稿”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("存草稿")).click() sc.logger.info('拍摄-高清相机拍摄完成')
class TestEditSticker(TestCase): """动画贴纸的测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_sticker_01(self): """剪辑-动画贴纸.""" sc.logger.info('剪辑-进入动画贴纸') fun_name = 'test_edit_sticker' sc.logger.info('打开一个草稿视频') ba.home_first_click('更多草稿') sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“素材·效果”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("素材·效果")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“贴纸”') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name("贴纸")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('剪辑-进入动画贴纸测试完成') def test_sticker_02(self): """剪辑-动画贴纸-添加.""" sc.logger.info('剪辑-动画贴纸-添加') fun_name = 'test_edit_sticker_add' sc.logger.info('添加一个普通"贴纸"') ba.sticker_comm_add() sc.logger.info('确认添加') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name( iOS_elements.el_confirm_btn)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加第二个贴纸并放弃') 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('剪辑-动画贴纸-添加测试完成') def test_sticker_03(self): """剪辑-动画贴纸-GIF添加.""" sc.logger.info('剪辑-动画贴纸-GIF添加') fun_name = 'test_edit_sticker_GIF' sc.logger.info('点击GIF') WebDriverWait( sc.driver, 10, 1).until(lambda x: x.find_element_by_name('GIF')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加一个GIF"贴纸"') ba.material_used('下载') sc.capture_screen(fun_name, self.img_path) sc.logger.info('确定') time.sleep(0.5) WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name( iOS_elements.el_confirm_btn)).click() sc.logger.info('剪辑-动画贴纸-GIF添加测试完成') def test_sticker_04(self): """剪辑-动画贴纸-放弃添加.""" sc.logger.info('剪辑-动画贴纸-放弃添加') fun_name = 'test_edit_sticker_cancel' sc.logger.info('取消添加') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name( iOS_elements.el_cancel_btn)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('确定放弃') try: WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('确认')).click() sc.capture_screen(fun_name, self.img_path) except TimeoutException: sc.logger.error('iOS此处有一个bug,贴纸未添加完成时,点击x,未弹出放弃弹窗') sc.logger.info('点击“存草稿”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("存草稿")).click() sc.logger.info('剪辑-动画贴纸-放弃添加测试完成')
# -*- coding: utf-8 -*- from iOS.Base import script_ultils as sc, iOS_elements import time from selenium.common.exceptions import TimeoutException, NoSuchElementException from selenium.webdriver.support.ui import WebDriverWait from appium.webdriver.common.touch_action import TouchAction import random # 获取屏幕尺寸 width, height = sc.get_size() 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, 500) def find_element_click(method, timeout, el, duration=1): ''' 等待并点击某一控件. :param method: 寻找控件的方法
class TestExport(TestCase): """导出相关操作的测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_export_01_add(self): """导出-添加镜头.""" sc.logger.info('导出-添加镜头') fun_name = 'test_export_add' sc.logger.info('打开一个草稿视频') ba.home_first_click('更多草稿') sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“镜头编辑”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("镜头编辑")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('从相册添加') ba.clip_add('相册') sc.capture_screen(fun_name, self.img_path) sc.logger.info('拍摄添加镜头') ba.clip_add('拍摄') sc.capture_screen(fun_name, self.img_path) sc.logger.info('导出-添加镜头测试完成') def test_export_02_del(self): """导出-删除镜头.""" sc.logger.info('导出-删除镜头') fun_name = 'test_export_del' clip_list = sc.driver.find_elements_by_name('') if len(clip_list) >= 2: clip_list = clip_list[:2] for clip in clip_list: clip.click() WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('确认')).click() time.sleep(0.5) sc.capture_screen(fun_name, self.img_path) sc.logger.info('保存/上传') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("保存/上传")).click() sc.capture_screen(fun_name, self.img_path) def test_export_03_720P(self): """导出-720P.""" sc.logger.info('导出-720P') fun_name = 'test_export_720P' sc.logger.info('点击“保存到相册”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("保存到相册")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“高清 720P”') ba.export_video("高清 720P") sc.capture_screen(fun_name, self.img_path) sc.logger.info('导出-保存到相册-720P-二次导出测试完成')
class TestCreationShare(TestCase): """创作页面内分享相关的测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_share_01(self): """分享-标题&描述.""" sc.logger.info('分享-标题&描述.') fun_name = 'test_share_title' sc.logger.info('点击创作中心主按钮') ba.home_enter() sc.logger.info('点击第一个草稿封面') ba.find_element_click('xpath', 5, iOS_elements.el_home_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('保存/上传') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("保存/上传")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('关闭定位服务') try: WebDriverWait(sc.driver, 3, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_loc_clo)).click() sc.capture_screen(fun_name, self.img_path) except TimeoutException: sc.logger.info('不是第一次点击保存/上传按钮') sc.logger.info('输入标题和描述') ba.publish_input() sc.capture_screen(fun_name, self.img_path) sc.logger.info('导出-标题&描述测试完成') def test_share_02(self): """分享-封面编辑.""" sc.logger.info('分享-封面编辑.') fun_name = 'test_share_cover' sc.logger.info('更换封面') ba.publish_cover_add() sc.capture_screen(fun_name, self.img_path) sc.logger.info('导出-封面编辑测试完成') def test_share_03(self): """分享-其他设置.""" sc.logger.info('分享-其他设置.') fun_name = 'test_share_other' sc.logger.info('点击更多') sc.driver.find_element_by_xpath( '//XCUIElementTypeStaticText[@name="更多"]').click() sc.logger.info('谁可以看') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('谁可以看')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('仅自己可见') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('仅自己可见')).click() sc.capture_screen(fun_name, self.img_path) try: WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("我知道了")).click() except TimeoutException: sc.logger.info('不是第一次设置,无设置提示') sc.capture_screen(fun_name, self.img_path) 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() sc.capture_screen(fun_name, self.img_path) sc.logger.info('返回发布页') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(iOS_elements.pub_back)).click() sc.logger.info('导出-其他设置测试完成') def test_share_04(self): """分享-发布.""" sc.logger.info('分享-发布') fun_name = 'test_share_publish' sc.logger.info('发布') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name("发布")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('关闭定位服务') try: WebDriverWait(sc.driver, 3, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_loc_clo)).click() sc.capture_screen(fun_name, self.img_path) except TimeoutException: sc.logger.info('不是第一次点击发布按钮') sc.logger.info('数据网络时,取消上传') try: WebDriverWait(sc.driver, 3, 1).until(lambda x: x.find_element_by_xpath( '//XCUIElementTypeButton[@name="取消"]')).click() sc.logger.error('当前是数据网络,取消上传,请手动执行相关测试') return False except TimeoutException: sc.logger.info('Wi-Fi可用') sc.logger.info('发布') ba.publish() sc.capture_screen(fun_name, self.img_path) sc.logger.info('分享-发布测试完成')
class TestEditTransition(TestCase): """转场的基本操作测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_edit_transition_01(self): """剪辑-进入转场.""" sc.logger.info('剪辑-进入转场') fun_name = 'test_edit_transition' sc.logger.info('打开一个草稿视频') ba.home_first_click('更多草稿') sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“镜头编辑”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("镜头编辑")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“转场icon”') try: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name( iOS_elements.btn_transition_icon)).click() sc.capture_screen(fun_name, self.img_path) except TimeoutException: sc.logger.info('只有一个镜头,无法使用转场') return True sc.logger.info('剪辑-进入转场测试完成') def test_edit_transition_02(self): """剪辑-转场-下载使用.""" sc.logger.info('剪辑-转场-下载使用') fun_name = 'test_edit_transition_use' sc.logger.info('下载并使用转场') ba.clip_transition() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“存草稿”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("存草稿")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('剪辑-转场-下载使用测试完成')
class TestEditSound(TestCase): """配音的基本操作测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_edit_sound_01_rec(self): """剪辑-配音-录制.""" sc.logger.info('剪辑-配音-录制') fun_name = 'test_edit_sound_rec' sc.logger.info('打开一个草稿视频') ba.home_first_click('更多草稿') sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“素材·效果”') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name("素材·效果")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('左滑并点击"配音和音效"') el_loc = WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('画中画')) ba.swipe_left(el_loc, 0.3, 300) WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('配音和音效')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('删除已添加的配音或音效') try: WebDriverWait(sc.driver, 3, 1).until( lambda x: x.find_element_by_accessibility_id(iOS_elements.btn_rec_start)) except TimeoutException: sc.logger.info('当前位置已添加配音或音效,删除后录制') sc.driver.find_element_by_name('删除').click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('"录制"一段音频') ba.sound_rec_add() sc.capture_screen(fun_name, self.img_path) sc.logger.info('确认添加') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(iOS_elements.el_confirm_btn)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('剪辑-配音-录制添加测试完成') def test_edit_sound_02_audio(self): """剪辑-配音-音效.""" sc.logger.info('剪辑-配音-音效') fun_name = 'test_edit_sound_audio' WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('配音和音效')).click() sc.logger.info('删除已添加的配音或音效') try: WebDriverWait(sc.driver, 3, 1).until( lambda x: x.find_element_by_accessibility_id(iOS_elements.btn_rec_start)) except TimeoutException: sc.logger.info('当前位置已添加配音或音效,删除后录制') sc.driver.find_element_by_name('删除').click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加一段音效') ba.sound_audio_add() sc.capture_screen(fun_name, self.img_path) sc.logger.info('确认添加') time.sleep(2) WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(iOS_elements.el_confirm_btn)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('剪辑-配音-音效添加测试完成') def test_edit_sound_03_cancel(self): """剪辑-配音-放弃.""" sc.logger.info('剪辑-配音-放弃') fun_name = 'test_edit_sound_cancel' WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('配音和音效')).click() sc.logger.info('删除已添加的配音或音效') try: WebDriverWait(sc.driver, 3, 1).until( lambda x: x.find_element_by_accessibility_id(iOS_elements.btn_rec_start)) except TimeoutException: sc.logger.info('当前位置已添加配音或音效,删除后录制') sc.driver.find_element_by_name('删除').click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('"录制"一段音频') ba.sound_rec_add() sc.capture_screen(fun_name, self.img_path) sc.logger.info('取消添加') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(iOS_elements.el_cancel_btn)).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('点击“存草稿”按钮') WebDriverWait(sc.driver, 5, 1).until( lambda el: el.find_element_by_name("存草稿")).click() sc.logger.info('剪辑-配音-放弃测试完成')
class TestPreviewAlbum(TestCase): """相册mv测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_preview_01(self): """预览页-创建相册MV.""" sc.logger.info('预览页-创建相册MV') fun_name = 'test_preview_MV' sc.logger.info('相册MV') ba.home_first_click('相册MV') sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加图片') ba.gallery_clip_add('图片', 5) sc.logger.info('点击下一步进入预览页') ba.find_element_click('predicate', 10, iOS_elements.el_gallery_next) def test_preview_02(self): """预览页-相册MV.""" sc.logger.info('预览页-相册MV') fun_name = 'test_preview_edit' sc.logger.info('点击“镜头编辑”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("镜头编辑")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“图片时长”') try: WebDriverWait( sc.driver, 5, 1).until(lambda x: x.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(iOS_elements.el_confirm_btn).click() sc.capture_screen(fun_name, self.img_path) except TimeoutException: sc.logger.info('当前镜头是gif图片,直接存草稿') sc.logger.info('点击“存草稿”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("存草稿")).click() sc.logger.info('预览页-相册MV测试完成')
class TestGallery(TestCase): """Gallery的测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_gallery_01(self): """相册-视频相关操作.""" sc.logger.info('相册-视频相关操作') fun_name = 'test_gallery_video' sc.logger.info('点击创作中心主按钮') ba.home_enter() sc.logger.info('点击“视频剪辑”按钮') try: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_home_edit)).click() except TimeoutException: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.home_edit)).click() sc.logger.info('选择一个视频并进行相关操作') ba.gallery_clip_op() sc.capture_screen(fun_name, self.img_path) sc.logger.info('相册-视频相关操作测试完成') def test_gallery_02(self): """相册-图片相关操作.""" sc.logger.info('相册-图片相关操作') fun_name = 'test_gallery_img' sc.logger.info('选择图片') WebDriverWait( sc.driver, 3, 1).until(lambda el: el.find_element_by_name('视频')).click() 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.gallery_clip_op() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击下一步进入预览页') ba.find_element_click('predicate', 10, iOS_elements.el_gallery_next) sc.capture_screen(fun_name, self.img_path) sc.logger.info('返回创作页') ba.back_to_home() sc.logger.info('相册-图片相关操作测试完成') def test_gallery_03(self): """相册-放弃操作.""" sc.logger.info('相册-放弃操作') fun_name = 'test_gallery_giveup' sc.logger.info('点击“视频剪辑”按钮') try: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_home_edit)).click() except TimeoutException: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.home_edit)).click() sc.logger.info('添加"视频"') ba.gallery_clip_add('视频', 2) sc.capture_screen(fun_name, self.img_path) sc.logger.info('左上角返回') WebDriverWait(sc.driver, 10, 1).until(lambda el: el.find_element_by_name( iOS_elements.gallery_back)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('放弃') WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_name('丢弃')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('相册-放弃操作相关操作测试完成')
class TestHome(TestCase): """小影主页面的测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_home_01(self): """首页.""" sc.logger.info('首页') fun_name = 'test_home' sc.logger.info('点击创作中心主按钮') ba.home_enter() sc.logger.info('VIP订阅页面展示') sc.driver.find_element_by_xpath(iOS_elements.el_home_vip).click() sc.capture_screen(fun_name, self.img_path) sc.driver.find_element_by_name(iOS_elements.el_vip_close).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('首页广告展示及刷新') try: sc.driver.find_element_by_xpath(iOS_elements.el_home_ad).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('刷新广告') time.sleep(5) sc.driver.find_element_by_name(iOS_elements.el_ad_back).click() sc.logger.info('退出广告') try: WebDriverWait(sc.driver, 10, 1).until( lambda x: x.find_element_by_name(iOS_elements.el_ad_clo)).click() except TimeoutException: sc.logger.info('已经退出广告页面了') except NoSuchElementException: sc.logger.error('首页加载出错了') pass sc.logger.info('首页-广告&内购icon测试完成') def test_home_02(self): """首页-工作室.""" sc.logger.info('首页') fun_name = 'test_home_studio' sc.logger.info('点击"更多草稿"') time.sleep(1) WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('更多草稿')).click() sc.logger.info('切换展示方式') try: WebDriverWait(sc.driver, 3, 1).until( lambda x: x.find_element_by_name(iOS_elements.btn_gridview)).click() except TimeoutException: WebDriverWait(sc.driver, 3, 1).until( lambda x: x.find_element_by_name(iOS_elements.btn_listview)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击删除按钮') try: WebDriverWait(sc.driver, 3, 1).until( lambda x: x.find_element_by_xpath(iOS_elements.btn_studio_del1)).click() except TimeoutException: WebDriverWait(sc.driver, 3, 1).until( lambda x: x.find_element_by_xpath(iOS_elements.btn_studio_del2)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('确定删除') try: WebDriverWait(sc.driver, 3, 1).until( lambda x: x.find_element_by_name('是')).click() except TimeoutException: sc.logger.info('视频正在上传,无法删除') return True sc.capture_screen(fun_name, self.img_path) sc.logger.info('首页-我的工作室操作测试完成')
class TestCameraMusic(TestCase): """camera音乐视频的基本测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_music_01(self): """拍摄-音乐视频(3:4)-音频下载.""" sc.logger.info('拍摄-音乐视频(3:4)-音频下载') fun_name = 'test_music_download' 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('下载音乐') sc.driver.find_element_by_xpath(iOS_elements.el_mus_download).click() time.sleep(10) sc.logger.info('拍摄-音乐视频(3:4)-音频下载完成') # 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) def test_music_02(self): """拍摄-音乐视频(3:4)-音频使用.""" sc.logger.info('拍摄-音乐视频(3:4)-音频使用') fun_name = 'test_music_use' sc.logger.info('点击一首已下载音频试听') try: WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_title1)).click() except: WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_title2)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“添加”按钮') 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)-音频使用完成') def test_music_03(self): """拍摄-音乐视频-更换音乐重录.""" sc.logger.info('拍摄-音乐视频-更换音乐重录') fun_name = 'test_music_change' sc.logger.info('点击音乐视频') time.sleep(1) sc.driver.find_element_by_name('音乐视频').click() sc.logger.info('点击“点击添加配乐”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name('点击添加配乐')).click() sc.logger.info('点击一首已下载音频试听') try: WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_title1)).click() except: WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_title2)).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('点击音乐标题') WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_change)).click() sc.logger.info('更换音乐重录') sc.driver.find_element_by_name("更换音乐重录").click() sc.logger.info('点击一首已下载音频试听') try: WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_title1)).click() except: WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_title2)).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('开始录制') el_capture = WebDriverWait(sc.driver, 10).until( lambda x: x.find_element_by_xpath(iOS_elements.el_cp_music)) el_capture.click() sc.capture_screen(fun_name, self.img_path) time.sleep(5) sc.logger.info('录制5s后点击录制按钮停止录制') el_capture.click() sc.capture_screen(fun_name, self.img_path) try: sc.logger.info('点击确认按钮') WebDriverWait(sc.driver, 5, 1).until(lambda el: el.find_element_by_name( iOS_elements.el_cam_next)).click() except TimeoutException: sc.logger.info('音乐时长较短,已自动跳转预览页') sc.capture_screen(fun_name, self.img_path) 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('拍摄-音乐视频-更换音乐重录完成') def test_music_04(self): """拍摄-音乐视频-直接重录.""" sc.logger.info('拍摄-音乐视频-直接重录') fun_name = 'test_music_redo' sc.logger.info('点击音乐视频') time.sleep(1) sc.driver.find_element_by_name('音乐视频').click() sc.logger.info('点击“点击添加配乐”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name('点击添加配乐')).click() sc.logger.info('点击一首已下载音频试听') try: WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_title1)).click() except: WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_title2)).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('点击音乐标题') WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_change)).click() sc.logger.info('直接重录') sc.driver.find_element_by_name("直接重录").click() # 点拍 sc.logger.info('开始录制') el_capture = WebDriverWait(sc.driver, 10).until( lambda x: x.find_element_by_xpath(iOS_elements.el_cp_music)) el_capture.click() sc.capture_screen(fun_name, self.img_path) time.sleep(5) sc.logger.info('录制5s后点击录制按钮停止录制') el_capture.click() sc.capture_screen(fun_name, self.img_path) try: sc.logger.info('点击确认按钮') WebDriverWait(sc.driver, 5, 1).until(lambda el: el.find_element_by_name( iOS_elements.el_cam_next)).click() except TimeoutException: sc.logger.info('音乐时长较短,已自动跳转预览页') sc.capture_screen(fun_name, self.img_path) 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('点击“存草稿”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("存草稿")).click() sc.logger.info('拍摄-音乐视频-直接重录完成')
class TestUserLogin(TestCase): """用户登录测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_login_01_start(self): """测试登录页面未登录时的初始状态 """ sc.logger.info('登录页面初始状态检查测试开始') fun_name = 'test_login_origin' sc.logger.info('授权小影发送通知') try: WebDriverWait( sc.driver, 3, 1).until(lambda x: x.find_element_by_name("允许")).click() except TimeoutException: sc.logger.info('已授权小影发送通知') # sc.logger.info('执行引导操作') # try: # time.sleep(2) # sc.driver.find_element_by_name("下一步").click() # sc.driver.find_element_by_name("下一步").click() # sc.driver.find_element_by_name("完成").click() # except NoSuchElementException: # sc.logger.info('已经执行过操作引导页面') sc.logger.info('小影圈页面-关闭活动弹窗') try: sc.driver.find_element_by_xpath(iOS_elements.home_clo).click() except NoSuchElementException: sc.logger.info('当前无或者已关闭活动弹窗') sc.logger.info('切换到"我"') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_xpath(iOS_elements.btn_me)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('小影圈页面-关闭活动弹窗') try: sc.driver.find_element_by_xpath(iOS_elements.home_clo).click() except NoSuchElementException: sc.logger.info('当前无或者已关闭活动弹窗') @staticmethod def login_judge(): """判断是否已经登录.""" btn_login = "******" try: el_login_btn = sc.driver.find_element_by_name(btn_login) except NoSuchElementException: sc.logger.info('未找到"注册/登录"按钮,用户已经成功登录') return True else: sc.logger.info('找到"注册/登录"按钮,用户未登录') return el_login_btn @staticmethod def qq_login(username, password): """使用qq登录.""" sc.logger.info('点击"QQ账号"') try: WebDriverWait( sc.driver, 10).until(lambda x: x.find_element_by_xpath( '//XCUIElementTypeStaticText[@name="QQ登录"]')).click() except TimeoutException: sc.driver.find_element_by_name("使用此账号登录").click() try: try: WebDriverWait( sc.driver, 10).until(lambda x: x.find_element_by_xpath( "//XCUIElementTypeButton[@name='登录']")).click() except TimeoutException: sc.driver.find_element_by_name("授权并登录").click() sc.logger.info('QQ账号已登录,直接点击"授权并登录"') except NoSuchElementException: # 授权页面的登录有时显示"授权并登录",有时显示"登录",所以此处输入账号登录的判断需要再优化 sc.logger.info('QQ账号未登录,请输入QQ账号及密码登录') sc.logger.info('输入QQ账号') el_account = sc.driver.find_element_by_accessibility_id('帐号') el_account.click() el_account.send_keys(username) sc.logger.info() el_passwd = sc.driver.find_element_by_accessibility_id('输入QQ密码') el_passwd.click() el_passwd.send_keys(password) sc.logger.info('点击“登录”按钮') sc.driver.find_element_by_name('登录').click() sc.logger.info('检查QQ授权登录是否成功') try: WebDriverWait( sc.driver, 10).until(lambda el_settings: el_settings.find_element_by_name( iOS_elements.btn_settings)) sc.logger.info('授权登录成功') try: sc.driver.find_element_by_name("icon dj close").click() except NoSuchElementException: sc.logger.info('非首次登录,已跳过领取特权') except TimeoutException: sc.logger.info('QQ授权登录超时') if TestUserLogin.login_judge() is True: return True return False @staticmethod def login_method(req_method, username, passwd): """定义带登录方法的登录方式,目前国内只支持三种.""" method_list = ['weibo', 'wechat', 'QQ'] if req_method not in method_list: sc.logger.error('不支持的登录方式: %s', req_method) return False if req_method == 'QQ': return TestUserLogin.qq_login(username, passwd) else: return False @staticmethod def test_login_02_qq(): """国内用户测试使用qq登录.""" sc.logger.info('登录页面QQ登录测试开始') login_res = TestUserLogin.login_judge() if login_res is True: assert True else: sc.logger.info('点击"注册/登录"按钮') login_res.click() username = '******' passwd = 'qa123456' login_res = TestUserLogin.login_method('QQ', username, passwd) assert login_res is not False
class TestUserFans(TestCase): """测试用户空间粉丝的测试类,分步截图.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_user_fans(self): """测试用户空间粉丝页面的初始状态.""" sc.logger.info('用户空间粉丝页面初始状态检查测试开始') fun_name = 'test_user_fans' sc.logger.info('点击个人中心主按钮') p_btn = 'com.quvideo.xiaoying:id/img_studio' WebDriverWait( sc.driver, 10, 1).until(lambda c_btn: c_btn.find_element_by_id(p_btn)).click() el_tab_list = sc.driver.find_elements_by_id( 'com.quvideo.xiaoying:id/text_tab_title') for el_tab in el_tab_list: if el_tab.text == '粉丝': sc.logger.info('点击“粉丝”tab') el_tab.click() sc.logger.info('粉丝页面初始状态截图开始') sc.capture_screen(fun_name, self.img_path) assert el_tab is not None def test_fans_follow(self): """粉丝关注/取消关注测试.""" sc.logger.info('用户空间粉丝页面关注状态测试开始') fun_name = 'test_fans_follow' btn_follow = 'com.quvideo.xiaoying:id/btn_follow_state' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(btn_follow)).click() el_btn_follow = sc.driver.find_element_by_id(btn_follow) if el_btn_follow.text == '已关注': sc.logger.info('点击第一个已关注状态按钮') el_btn_follow.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('第一次取消点击后,关注状态截图') sc.capture_screen(fun_name, self.img_path) else: sc.logger.info('点击第一个关注状态按钮') el_btn_follow.click() sc.logger.info('第一次点击关注后,关注状态截图') sc.capture_screen(fun_name, self.img_path) assert el_btn_follow is not None def test_fans_home(self): """点击粉丝头像进入粉丝空间测试.""" sc.logger.info('粉丝空间空间测试') fun_name = 'test_fans_home' avatar_img = 'com.quvideo.xiaoying:id/avatar_img' WebDriverWait( sc.driver, 10, 1).until(lambda el: el.find_element_by_id(avatar_img)).click() sc.logger.info('点击粉丝头像后,进入粉丝空间截图') sc.capture_screen(fun_name, self.img_path) sc.driver.press_keycode(4) assert avatar_img is not None 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
class TestEditEffects(TestCase): """复杂编辑-添加多个效果测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_effcts_01_music(self): """复杂操作-添加配乐.""" sc.logger.info('复杂操作-添加配乐') fun_name = 'test_effcts_music' sc.logger.info('打开一个草稿视频') ba.home_first_click('更多草稿') sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“素材·效果”') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name("素材·效果")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"多段配乐"') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('多段配乐')).click() sc.logger.info("循环添加3个'配乐'") for i in range(3): ba.loop_add_music() time.sleep(1) sc.capture_screen(fun_name, self.img_path) sc.logger.info('确认添加') sc.logger.info('确定') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(iOS_elements.el_confirm_btn)).click() sc.logger.info('复杂操作-添加配乐测试完成') def test_effcts_02_text(self): """复杂操作-添加字幕.""" sc.logger.info('复杂操作-添加字幕') fun_name = 'test_effcts_text' sc.logger.info('点击"字幕"') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('字幕')).click() sc.logger.info('添加动态字幕') for i in range(3): ba.loop_add_text() time.sleep(1) sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加普通字幕') for i in range(3): ba.loop_add_comm_text() time.sleep(1) sc.capture_screen(fun_name, self.img_path) sc.logger.info('切换到字体') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(iOS_elements.btn_text_font)).click() sc.logger.info('点击"下载"按钮') try: WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_xpath(iOS_elements.btn_font_download)).click() except TimeoutException: sc.logger.info('当前页面已无为下载字体') sc.logger.info('切换到字体设置页面') sc.driver.find_element_by_name(iOS_elements.btn_text_set).click() sc.logger.info('随机对齐方式') el_align = [iOS_elements.btn_text_c, iOS_elements.btn_text_l, iOS_elements.btn_text_r] sc.driver.find_element_by_name(random.choice(el_align)).click() sc.logger.info('点击阴影开关') sc.driver.find_element_by_xpath("//*/XCUIElementTypeSwitch[1]").click() sc.logger.info('点击字幕动画开关') sc.driver.find_element_by_xpath("//*/XCUIElementTypeSwitch[2]").click() sc.logger.info('确认添加') ba.effect_add_confirm() sc.capture_screen(fun_name, self.img_path) sc.logger.info('复杂操作-添加字幕测试完成') def test_effcts_03_sticker(self): """复杂操作-添加贴纸.""" sc.logger.info('复杂操作-添加贴纸') fun_name = 'test_edit_sticker' sc.logger.info('点击“贴纸”') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name("贴纸")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加普通贴纸') for i in range(3): try: sc.logger.info('点击"添加"') WebDriverWait(sc.driver, 3, 1).until( lambda x: x.find_element_by_name('添加')).click() except TimeoutException: sc.logger.info('第一次进入贴纸,无添加按钮') sc.logger.info('选择一个普通"贴纸"添加') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_xpath(iOS_elements.el_sticker_cho)).click() sc.logger.info('确认添加') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(iOS_elements.el_confirm_btn)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加GIF贴纸') for i in range(3): WebDriverWait(sc.driver, 3, 1).until( lambda x: x.find_element_by_name('添加')).click() sc.logger.info('点击GIF') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('GIF')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加一个GIF"贴纸"') ba.material_used('下载') sc.capture_screen(fun_name, self.img_path) sc.logger.info('确定') time.sleep(0.5) WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(iOS_elements.el_confirm_btn)).click() sc.logger.info('退出贴纸添加页面') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(iOS_elements.el_confirm_btn)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('复杂操作-添加贴纸测试完成') def test_effcts_04_collage(self): """复杂操作-添加画中画.""" sc.logger.info('复杂操作-添加画中画') fun_name = 'test_edit_collage' sc.logger.info('点击"画中画"') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('画中画')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加图片画中画') ba.collage_add('图片') sc.capture_screen(fun_name, self.img_path) sc.logger.info('确认添加') ba.effect_add_confirm() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"画中画"') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('画中画')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加视频画中画') ba.collage_add('视频') sc.capture_screen(fun_name, self.img_path) sc.logger.info('确认添加') ba.effect_add_confirm() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"画中画"') time.sleep(0.5) WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('画中画')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加gif画中画') ba.collage_add('GIF') sc.capture_screen(fun_name, self.img_path) sc.logger.info('确认添加') ba.effect_add_confirm() sc.capture_screen(fun_name, self.img_path) sc.logger.info('复杂操作-添加画中画测试完成') def test_effcts_05_fx(self): """复杂操作-添加特效.""" sc.logger.info('复杂操作-添加特效') fun_name = 'test_edit_fx' sc.logger.info('点击"特效"') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('特效')).click() sc.capture_screen(fun_name, self.img_path) el_more = 'xiaoying itembar down more' try: WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(el_more)) except TimeoutException: sc.logger.info('当前位置已添加过"特效"') sc.logger.info('点击屏幕弹出已添加的特效编辑页面') ba.screen_tap('特效', 200, 200) sc.logger.info('删除') sc.driver.find_element_by_name('删除').click() sc.logger.info('添加') WebDriverWait(sc.driver, 10, 1).until( lambda x: x.find_element_by_name('添加')).click() sc.logger.info('下载“特效”') fx_list = sc.driver.find_elements_by_xpath(iOS_elements.el_fx_download) if fx_list: for fx in fx_list: fx.click() time.sleep(5) else: pass sc.logger.info('使用"特效"') sc.driver.find_element_by_xpath(iOS_elements.el_fx_cho).click() sc.logger.info('确认添加') sc.driver.find_element_by_name(iOS_elements.el_confirm_btn).click() time.sleep(5) sc.logger.info('再次添加特效') WebDriverWait(sc.driver, 3, 1).until( lambda x: x.find_element_by_name('添加')).click() WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(el_more)) sc.logger.info('使用"特效"') sc.driver.find_element_by_xpath(iOS_elements.el_fx_cho).click() sc.logger.info('确认添加') sc.driver.find_element_by_name(iOS_elements.el_confirm_btn).click() time.sleep(5) sc.driver.find_element_by_name(iOS_elements.el_confirm_btn).click() sc.logger.info('复杂操作-添加特效测试完成') def test_effcts_05_sound(self): """复杂操作-添加配音和音效.""" sc.logger.info('复杂操作-添加配音和音效') fun_name = 'test_edit_sound' sc.logger.info('左滑并点击"配音和音效"') el_loc = WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('画中画')) ba.swipe_left(el_loc, 0.3, 300) WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('配音和音效')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('"录制"一段音频') ba.sound_rec_add() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加一段音效') ba.sound_audio_add() sc.capture_screen(fun_name, self.img_path) sc.logger.info('确认添加') time.sleep(2) WebDriverWait(sc.driver, 15, 1).until( lambda x: x.find_element_by_name(iOS_elements.el_confirm_btn)).click() sc.logger.info('复杂操作-添加配音和音效测试完成') def test_effcts_06_publish(self): """复杂操作-发布.""" sc.logger.info('复杂操作-发布') fun_name = 'test_edit_publish' sc.logger.info('保存/上传') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name("保存/上传")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('输入标题和描述') ba.publish_input() sc.capture_screen(fun_name, self.img_path) sc.logger.info('发布') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name("发布")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('关闭定位服务') try: WebDriverWait(sc.driver, 3, 1).until( lambda x: x.find_element_by_xpath(iOS_elements.el_loc_clo)).click() sc.capture_screen(fun_name, self.img_path) except TimeoutException: sc.logger.info('不是第一次点击发布按钮') sc.logger.info('选择480P导出') try: sc.driver.find_element_by_name("清晰 480P").click() except NoSuchElementException: sc.logger.error('网络不可用,取消上传,请手动执行相关测试') return False sc.logger.info('开始导出并上传') try: WebDriverWait(sc.driver, 300, 1).until( lambda x: x.find_element_by_name('发现')) except TimeoutException: sc.logger.error('发布超时') sc.logger.info('复杂操作-发布测试完成')
class TestCameraSelf(TestCase): """camera美颜趣拍的测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_self_01_sticker(self): """拍摄-美颜趣拍(全屏)-人脸贴纸.""" sc.logger.info('拍摄-美颜趣拍(全屏)-人脸贴纸') fun_name = 'test_01_sticker' sc.logger.info('点击“美颜趣拍”') ba.home_first_click("美颜趣拍") sc.capture_screen(fun_name, self.img_path) # 第一次从次要功能位打开自拍,拍摄按钮是音乐视频的控件,所以先关闭再打开 sc.logger.info('退出拍摄') time.sleep(1) WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(iOS_elements.el_cam_close)).click() sc.logger.info('点击“美颜趣拍”') WebDriverWait(sc.driver, 5).until( lambda x: x.find_element_by_name('美颜趣拍')).click() sc.logger.info('点击人脸贴纸icon') ba.find_element_click('name', 10, iOS_elements.el_sticker_icon) sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载人脸贴纸') WebDriverWait(sc.driver, 5).until( lambda x: x.find_element_by_xpath(iOS_elements.el_sticker_download)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('使用下载的人脸贴纸') ba.find_element_click('xpath', 10, iOS_elements.el_sticker_used) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击屏幕消除贴纸控件') actions = TouchAction(sc.driver) actions.tap(None, 200, 200).release().perform() sc.capture_screen(fun_name, self.img_path) sc.logger.info('拍摄-美颜趣拍(全屏)-人脸贴纸测试完成') def test_self_02_capture(self): """拍摄-美颜趣拍(全屏)-拍摄.""" sc.logger.info('拍摄-美颜趣拍(全屏)-拍摄') fun_name = 'test_02_capture' # 点拍 sc.logger.info('拍摄一段5s的视频') btn_rec = WebDriverWait(sc.driver, 10).until( lambda x: x.find_element_by_xpath(iOS_elements.el_cp_self)) ba.video_capture('点拍', btn_rec, 5) sc.capture_screen(fun_name, self.img_path) sc.logger.info('取消限制弹窗') try: WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(iOS_elements.el_cancel)).click() except TimeoutException: sc.logger.info('限制弹窗已取消') sc.logger.info('点击“存草稿”按钮') sc.driver.find_element_by_name("存草稿").click() sc.logger.info('拍摄-美颜趣拍(全屏)-拍摄测试完成')
class TestPreviewTheme(TestCase): """预览页面的theme测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_preview_theme(self): """预览页-主题·配乐页面.""" sc.logger.info('预览页-主题·配乐页面') fun_name = 'test_preview_theme' sc.logger.info('点击创作中心主按钮') ba.home_enter() sc.logger.info('点击“视频剪辑”按钮') try: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_home_edit)).click() except TimeoutException: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.home_edit)).click() sc.logger.info('添加视频') ba.gallery_clip_add('视频', 1) sc.capture_screen(fun_name, self.img_path) sc.logger.info('切换到图片') sc.driver.find_element_by_name("视频").click() sc.driver.find_element_by_name("图片").click() sc.logger.info('添加图片') ba.gallery_clip_add('图片', 2) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击下一步') ba.find_element_click('predicate', 10, iOS_elements.el_gallery_next) sc.logger.info('点击“主题·配乐”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("主题·配乐")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('暂停播放') WebDriverWait(sc.driver, 10, 1).until( lambda x: x.find_element_by_name(iOS_elements.btn_stop)).click() sc.logger.info('使用“主题”') try: WebDriverWait(sc.driver, 3, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_theme_use)).click() except TimeoutException: sc.logger.info('当前页面无已下载的主题') WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_theme_download)).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('下拉刷新') ba.refresh('down', 0.3, 500, 1) time.sleep(3) sc.logger.info('下载并使用主题') try: WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("使用")).click() except TimeoutException: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name( iOS_elements.el_store_download1)).click() sc.logger.info('使用主题') 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('暂停播放') WebDriverWait(sc.driver, 10, 1).until( lambda x: x.find_element_by_name(iOS_elements.btn_stop)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“存草稿”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("存草稿")).click() sc.logger.info('预览页-主题·配乐测试完成')
class TestEditClipsAdd(TestCase): """镜头添加相关操作的测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_clips_add_01(self): """剪辑-添加镜头-相册添加.""" sc.logger.info('剪辑-添加镜头-相册添加') fun_name = 'test_edit_add_clips' sc.logger.info('打开一个草稿视频') ba.home_first_click('更多草稿') sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“镜头编辑”') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name("镜头编辑")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('从相册添加') ba.clip_add('相册') sc.capture_screen(fun_name, self.img_path) sc.logger.info('退出预览页') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_xpath(iOS_elements.el_pre_clo)).click() sc.logger.info('确定退出') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('保存并退出')).click() try: WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_xpath('//XCUIElementTypeButton[@name="1"]')).click() except TimeoutException: sc.logger.info('返回首页后,无广告弹出') sc.logger.info('剪辑-添加镜头-相册添加测试完成') def test_clips_add_02(self): """剪辑-添加镜头-拍摄添加.""" sc.logger.info('剪辑-添加镜头-拍摄添加') fun_name = 'test_edit_clips_shot' sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“镜头编辑”') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name("镜头编辑")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('拍摄添加镜头') ba.clip_add('拍摄') sc.capture_screen(fun_name, self.img_path) sc.logger.info('退出预览页') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_xpath(iOS_elements.el_pre_clo)).click() sc.logger.info('确定退出') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('保存并退出')).click() try: WebDriverWait(sc.driver, 10, 1).until( lambda el: el.find_element_by_xpath('//XCUIElementTypeButton[@name="1"]')).click() except TimeoutException: sc.logger.info('返回首页后,无广告弹出') sc.logger.info('剪辑-添加镜头-拍摄添加测试完成') def test_clips_add_03(self): """剪辑-添加镜头-放弃.""" sc.logger.info('剪辑-添加镜头-放弃') fun_name = 'test_edit_clips_cancel' sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“镜头编辑”') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name("镜头编辑")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击"添加镜头"按钮') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(iOS_elements.btn_clip_add)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('选择相册') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('相册')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('勾选镜头') ba.gallery_clip_add('视频', 2) sc.logger.info('左上角返回') sc.driver.find_element_by_name(iOS_elements.gallery_back).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('确定放弃') try: WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name('确认')).click() sc.capture_screen(fun_name, self.img_path) except TimeoutException: sc.logger.error('没有勾选中镜头,需要手动再验证!') return False sc.logger.info('剪辑-放弃添加镜头-测试完成')
class TestTemplate(TestCase): """素材中心测试类.""" width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_template_01_theme(self): """素材中心-主题.""" sc.logger.info('素材中心-主题') fun_name = 'test_template_theme' ba.home_first_click('素材中心') sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击顶部banner') WebDriverWait(sc.driver, 5, 1).until(lambda el: el.find_element_by_xpath( iOS_elements.el_banner)).click() sc.logger.info('返回') try: WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_xpath( '//XCUIElementTypeButton[@name="vivavideo com nav back n"]' )).click() except TimeoutException: sc.driver.find_element_by_xpath( '//XCUIElementTypeButton[@name="vivavideo back n"]').click() sc.logger.info('点击“主题”') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name('主题')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载并使用主题') ba.material_used(iOS_elements.el_store_download1) sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加"视频"') ba.gallery_clip_add('视频', 2) sc.logger.info('点击下一步进入预览页') ba.find_element_click('predicate', 10, iOS_elements.el_gallery_next) sc.capture_screen(fun_name, self.img_path) 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() 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() sc.logger.info('删除下载的主题') ba.material_manager('主题', iOS_elements.el_store_del) sc.capture_screen(fun_name, self.img_path) sc.logger.info('素材中心-主题测试完成') def test_template_02_filter(self): """素材中心-滤镜.""" sc.logger.info('素材中心-滤镜') fun_name = 'test_template_filter' sc.logger.info('点击“滤镜”') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name('滤镜')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载并使用滤镜') ba.material_used(iOS_elements.el_store_download2) sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加"视频"') ba.gallery_clip_add('视频', 2) sc.logger.info('点击下一步进入预览页') ba.find_element_click('predicate', 10, iOS_elements.el_gallery_next) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“确认”') sc.driver.find_element_by_name(iOS_elements.el_confirm_btn).click() sc.logger.info('返回创作页') ba.back_to_home() 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() sc.capture_screen(fun_name, self.img_path) sc.logger.info('删除下载的滤镜') ba.material_manager('滤镜', iOS_elements.el_store_del) sc.capture_screen(fun_name, self.img_path) sc.logger.info('素材中心-滤镜测试完成') def test_template_03_fx(self): """素材中心-特效.""" sc.logger.info('素材中心-特效') fun_name = 'test_template_effect' sc.logger.info('点击“特效”') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name('特效')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下拉刷新') ba.refresh('down', 0.3, 500, 1) try: sc.logger.info('点击"使用"') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("使用")).click() except TimeoutException: sc.logger.info('该素材尚未下载,下载后再"使用"') time.sleep(1) fx_cover = '//*/XCUIElementTypeCollectionView/*/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeButton' WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_xpath(fx_cover)).click() WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('下载')).click() WebDriverWait( sc.driver, 10, 1).until(lambda x: x.find_element_by_name("使用")).click() sc.logger.info('添加"视频"') ba.gallery_clip_add('视频', 2) sc.logger.info('点击下一步进入预览页') ba.find_element_click('predicate', 10, iOS_elements.el_gallery_next) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“确认”') ba.effect_add_confirm() sc.logger.info('返回创作页') ba.back_to_home() ba.home_first_click('素材中心') sc.logger.info('点击“特效”') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name('特效')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('删除下载的特效') ba.material_manager('特效', iOS_elements.el_store_del) sc.capture_screen(fun_name, self.img_path) sc.logger.info('素材中心-特效测试完成') def test_template_04_font(self): """素材中心-字体.""" sc.logger.info('素材中心-字体') fun_name = 'test_template_font' ba.home_first_click('素材中心') sc.logger.info('点击“字体”') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name('字体')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载并使用字体') ba.material_used(iOS_elements.el_store_download1) sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加"视频"') ba.gallery_clip_add('视频', 2) sc.logger.info('点击下一步进入预览页') ba.find_element_click('predicate', 10, iOS_elements.el_gallery_next) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“确认”') ba.effect_add_confirm() sc.logger.info('返回创作页') ba.back_to_home() ba.home_first_click('素材中心') sc.logger.info('点击“字体”') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name('字体')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('删除下载的字体') ba.material_manager('字体', iOS_elements.el_store_del) sc.capture_screen(fun_name, self.img_path) sc.logger.info('素材中心-字体测试完成') def test_template_05_text(self): """素材中心-字幕.""" sc.logger.info('素材中心-字幕') fun_name = 'test_template_text' sc.logger.info('向上滑动') el_text = sc.driver.find_element_by_name("字体") coord_x = el_text.location.get('x') coord_y = el_text.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'up', 0.7, 500) sc.logger.info('点击“字幕”') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name('字幕')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载并使用字幕') ba.material_used(iOS_elements.el_store_download1) sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加"视频"') ba.gallery_clip_add('视频', 2) sc.logger.info('点击下一步进入预览页') ba.find_element_click('predicate', 10, iOS_elements.el_gallery_next) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“确认”') ba.effect_add_confirm() sc.logger.info('返回创作页') ba.back_to_home() ba.home_first_click('素材中心') sc.logger.info('向上滑动') el_text = sc.driver.find_element_by_name("字体") coord_x = el_text.location.get('x') coord_y = el_text.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'up', 0.7, 500) sc.logger.info('点击“字幕”') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name('字幕')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('删除下载的字幕') ba.material_manager('字幕', iOS_elements.el_store_del) sc.capture_screen(fun_name, self.img_path) sc.logger.info('素材中心-字幕测试完成') def test_template_06_sticker(self): """素材中心-动画贴纸.""" sc.logger.info('素材中心-动画贴纸') fun_name = 'test_template_sticker' sc.logger.info('向上滑动') el_text = sc.driver.find_element_by_name("字体") coord_x = el_text.location.get('x') coord_y = el_text.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'up', 0.7, 500) sc.logger.info('点击“动画贴纸”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('动画贴纸')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载并使用动画贴纸') ba.material_used(iOS_elements.el_store_download1) sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加"视频"') ba.gallery_clip_add('视频', 2) sc.logger.info('点击下一步进入预览页') ba.find_element_click('predicate', 10, iOS_elements.el_gallery_next) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“确认”') ba.effect_add_confirm() sc.logger.info('返回创作页') ba.back_to_home() ba.home_first_click('素材中心') sc.logger.info('向上滑动') el_text = sc.driver.find_element_by_name("字体") coord_x = el_text.location.get('x') coord_y = el_text.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'up', 0.7, 500) sc.logger.info('点击“动画贴纸”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('动画贴纸')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('删除下载的动画贴纸') ba.material_manager('动画贴纸', iOS_elements.el_store_del) sc.capture_screen(fun_name, self.img_path) sc.logger.info('素材中心-动画贴纸测试完成') def test_template_07_gif(self): """素材中心-GIF.""" sc.logger.info('素材中心-GIF') fun_name = 'test_template_gif' sc.logger.info('向上滑动') el_text = sc.driver.find_element_by_name("字体") coord_x = el_text.location.get('x') coord_y = el_text.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'up', 0.7, 500) sc.logger.info('点击“动画贴纸”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('动画贴纸')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('切换到“GIF”') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("GIF")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载并使用GIF贴纸') ba.material_used('下载') sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加"视频"') ba.gallery_clip_add('视频', 2) sc.logger.info('点击下一步进入预览页') ba.find_element_click('predicate', 10, iOS_elements.el_gallery_next) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“确认”') ba.effect_add_confirm() sc.logger.info('返回创作页') ba.back_to_home() ba.home_first_click('素材中心') sc.logger.info('向上滑动') el_text = sc.driver.find_element_by_name("字体") coord_x = el_text.location.get('x') coord_y = el_text.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'up', 0.7, 500) sc.logger.info('点击“动画贴纸”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('动画贴纸')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('切换到“GIF”') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("GIF")).click() sc.logger.info('删除下载的GIF贴纸') ba.material_manager('GIF贴纸', '删除') sc.capture_screen(fun_name, self.img_path) sc.logger.info('素材中心-GIF贴纸测试完成') def test_template_08_transition(self): """素材中心-转场.""" sc.logger.info('素材中心-转场') fun_name = 'test_template_transition' start_x = self.width // 2 start_y = self.height // 8 start_bottom = self.height - start_y sc.logger.info('向上滑动') el_text = sc.driver.find_element_by_name("字体") coord_x = el_text.location.get('x') coord_y = el_text.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'up', 0.7, 500) sc.logger.info('点击“转场”') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name('转场')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('向上滑动直到最底部') while True: try: sc.driver.find_element_by_name("没有更多了…").click() break except NoSuchElementException: sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 300) sc.logger.info('下载并使用转场') ba.material_used(iOS_elements.el_store_download1) sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加"视频"') ba.gallery_clip_add('视频', 2) sc.logger.info('点击下一步进入预览页') ba.find_element_click('predicate', 10, iOS_elements.el_gallery_next) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“确认”') sc.driver.find_element_by_name(iOS_elements.el_confirm_btn).click() sc.logger.info('返回创作页') ba.back_to_home() ba.home_first_click('素材中心') sc.logger.info('向上滑动') el_text = sc.driver.find_element_by_name("字体") coord_x = el_text.location.get('x') coord_y = el_text.location.get('y') sc.swipe_by_ratio(coord_x, coord_y, 'up', 0.7, 500) sc.logger.info('点击“转场”') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name('转场')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('删除下载的转场') ba.material_manager('转场', iOS_elements.el_store_del) sc.capture_screen(fun_name, self.img_path) sc.logger.info('素材中心-动画贴纸测试完成')
class TestPreviewMusic(TestCase): """预览页面的music测试类.""" # 获取屏幕尺寸 width, height = sc.get_size() img_path = sc.path_lists[0] @classmethod def setUpClass(cls): sc.driver.launch_app() time.sleep(3) @classmethod def tearDownClass(cls): time.sleep(3) sc.driver.close_app() def test_music_01_add(self): """预览页-配乐.""" sc.logger.info('配乐操作相关') fun_name = 'test_music_add' sc.logger.info('打开一个草稿视频') ba.home_first_click('更多草稿') sc.logger.info('点击草稿封面') ba.open_draft(iOS_elements.el_studio_draft) sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“主题·配乐”') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name("主题·配乐")).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('配乐相关操作') ba.preview_music() sc.capture_screen(fun_name, self.img_path) 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('下载音乐') sc.driver.find_element_by_xpath(iOS_elements.el_mus_download).click() # 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 test_music_03_other(self): """音乐库-其他分类音乐下载.""" sc.logger.info('音乐库-其他分类音乐下载') fun_name = 'test_preview_other' # 切换到其他分类 sc.logger.info('点击“中国风”分类') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('中国风')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('下载音乐') sc.driver.find_element_by_xpath(iOS_elements.el_mus_download).click() # 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 test_music_04_use(self): """音乐库-使用已下载音乐.""" sc.logger.info('音乐库-使用已下载音乐') fun_name = 'test_preview_use' sc.logger.info('点击“已下载”tab') WebDriverWait( sc.driver, 5, 1).until(lambda x: x.find_element_by_name('已下载')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加音乐') try: WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_title1)).click() except: WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_title2)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('点击“添加”按钮') sc.driver.find_element_by_name('添加').click() sc.logger.info('暂停播放') WebDriverWait(sc.driver, 10, 1).until( lambda x: x.find_element_by_name(iOS_elements.btn_stop)).click() sc.logger.info('删除配乐') WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_name( iOS_elements.btn_music_del)).click() sc.logger.info('点击添加配乐') WebDriverWait( sc.driver, 3, 1).until(lambda x: x.find_element_by_name('点击添加配乐')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('音乐库-使用已下载音乐测试完成') def test_music_05_delete(self): """音乐库-删除已下载音乐.""" sc.logger.info('音乐库-删除已下载音乐') fun_name = 'test_preview_delete' sc.logger.info('点击删除按钮') WebDriverWait(sc.driver, 5, 1).until( lambda x: x.find_element_by_name(iOS_elements.el_mus_del)).click() sc.logger.info('选择一首已下载音乐') el_check = sc.driver.find_elements_by_name(iOS_elements.el_mus_cho) el_check[0].click() sc.logger.info('再次点击删除按钮') WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name( iOS_elements.el_mus_del2)).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('音乐库-删除已下载音乐测试完成') def test_music_06_local(self): """音乐库-使用本地音乐.""" sc.logger.info('音乐库-使用本地音乐') fun_name = 'test_preview_local' WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_name('本地')).click() sc.capture_screen(fun_name, self.img_path) sc.logger.info('添加音乐') try: WebDriverWait(sc.driver, 5, 1).until(lambda x: x.find_element_by_xpath( iOS_elements.el_mus_title1)).click() except TimeoutException: sc.logger.info('本地音乐不存在!') return True sc.logger.info('点击“添加”按钮') sc.driver.find_element_by_name('添加').click() sc.logger.info('暂停播放') WebDriverWait(sc.driver, 10, 1).until( lambda x: x.find_element_by_name(iOS_elements.btn_stop)).click() sc.logger.info('确定') WebDriverWait(sc.driver, 10, 1).until(lambda x: x.find_element_by_accessibility_id( iOS_elements.btn_music_confirm)).click() sc.logger.info('点击“存草稿”按钮') WebDriverWait( sc.driver, 5, 1).until(lambda el: el.find_element_by_name("存草稿")).click() sc.logger.info('音乐库-使用本地音乐测试完成')