Esempio n. 1
0
class TestPlanetNotify(object):
    """小影圈通知页的测试类,分步截图."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_planet_notify_ui(self):
        """小影圈推荐页面初始状态测试."""
        sc.logger.info('小影圈推荐页面初始状态检查开始')
        fun_name = 'test_planet_notify_ui'

        sc.logger.info('点击小影圈主按钮')
        p_btn = 'com.quvideo.xiaoying:id/img_find'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(p_btn)).click()

        sc.logger.info('开始查找小影圈消息中心图标')
        message_btn = 'com.quvideo.xiaoying:id/btn_message'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(message_btn)).click()

        time.sleep(3)
        sc.logger.info('小影圈推荐页面初始状态截图开始')
        sc.capture_screen(fun_name, self.img_path)

    def test_notify_info(self):
        """测试消息中心通知页."""
        sc.logger.info('开始测试消息中心通知页.')
        fun_name = 'test_notify_info'
        start_x = self.width - self.width // 8
        start_y = self.height // 2

        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_y, 'left', 0.7, 500)
        sc.logger.info('消息中心通知页截图')
        sc.capture_screen(fun_name, self.img_path)

    def test_notify_message(self):
        """测试消息中心动态."""
        sc.logger.info('开始测试消息中心私信.')
        fun_name = 'test_notify_message'
        start_x = self.width - self.width // 8
        start_y = self.height // 2

        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_y, 'left', 0.7, 500)

        sc.logger.info('消息中心私信页截图')
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('通知中心测试完成,返回主页')
        sc.driver.press_keycode(4)
Esempio n. 2
0
class TestCameraSelf(object):
    """camera美颜趣拍的测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]
    c_btn = 'com.quvideo.xiaoying:id/img_creation'

    def test_camera_self(self):
        """拍摄-自拍视频(1:1)."""
        sc.logger.info('拍摄-美颜趣拍(1:1)')
        fun_name = 'test_camera_self'

        sc.logger.info('点击创作中心主按钮')
        sc.first_step(self.c_btn)

        sc.logger.info('点击“美颜趣拍”')
        sc.driver.find_element_by_android_uiautomator('text("美颜趣拍")').click()
        sc.logger.info('点击摄像头反转按钮')

        switch_btn = 'com.quvideo.xiaoying:id/img_switch'
        sc.driver.find_element_by_id(switch_btn).click()
        sc.capture_screen(fun_name, self.img_path)
        el_cp = sc.driver.find_element_by_id('com.quvideo.xiaoying:id/btn_rec')

        # 长按拍摄5s
        sc.logger.info('长按拍摄5s')
        actions = TouchAction(sc.driver)
        actions.long_press(el_cp, None, None, 5000).release().perform()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击确认按钮')
        next_btn = 'com.quvideo.xiaoying:id/cam_btn_next'
        sc.driver.find_element_by_id(next_btn).click()
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('点击“存草稿”按钮')
        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()

        sc.logger.info('美颜趣拍测试完成,点击返回按钮返回主页面')
        left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
        sc.driver.find_element_by_id(left_btn).click()
        sc.logger.info('拍摄-美颜趣拍拍摄完成')
Esempio n. 3
0
class TestEditCollage(object):
    """编辑页面画中画的基本操作测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_edit_collage(self):
        """剪辑-画中画-图片添加."""
        sc.logger.info('剪辑-画中画-图片添加')
        fun_name = 'test_edit_collage'

        start_x = self.width // 2
        start_bottom = self.height // 3

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        sc.driver.find_element_by_id(draft_img).click()

        sc.logger.info('点击“剪辑”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("剪辑")')).click()

        t_list = sc.driver.find_elements_by_id('com.quvideo.xiaoying:id/title')
        for el_item in t_list:
            if el_item.text == '画中画':
                sc.logger.info('开始点击画中画')
                el_item.click()
                break
        sc.logger.info('开始添加图片')
        gif_add_btn = 'com.quvideo.xiaoying:id/video_editor_btn_gif_add'
        sc.driver.find_element_by_id(gif_add_btn).click()

        sc.logger.info('添加一张图片')
        pic_cover_item = 'com.quvideo.xiaoying:id/collage_pic_item_cover'
        sc.driver.find_element_by_id(pic_cover_item).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击确认按钮')
        right_btn = 'com.quvideo.xiaoying:id/video_title_right_button'
        sc.driver.find_element_by_id(right_btn).click()

        time.sleep(2)
        sc.driver.swipe(start_x, start_bottom, start_x, start_bottom, 100)
        sc.driver.find_element_by_id(right_btn).click()
        sc.logger.info('再次点击确认按钮回到预览页')
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(right_btn)).click()
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(right_btn)).click()

        sc.logger.info('返回创作中心主界面')
        for i in range(3):
            time.sleep(2)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-画中画-图片添加测试完成')

    def test_edit_collage_add(self):
        """剪辑-画中画-GIF添加."""
        sc.logger.info('剪辑-画中画-GIF添加')
        fun_name = 'test_edit_collage_add'

        start_x = self.width // 2
        start_bottom = self.height // 3

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        sc.driver.find_element_by_id(draft_img).click()

        sc.logger.info('点击“剪辑”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'text("剪辑")')).click()

        t_list = sc.driver.find_elements_by_id('com.quvideo.xiaoying:id/title')
        for el_item in t_list:
            if el_item.text == '画中画':
                sc.logger.info('开始点击画中画')
                el_item.click()
                break
        sc.logger.info('开始添加图片')
        gif_add_btn = 'com.quvideo.xiaoying:id/video_editor_btn_gif_add'
        sc.driver.find_element_by_id(gif_add_btn).click()

        sc.logger.info('点击上方"gif" tab')
        gif_tab = 'com.quvideo.xiaoying:id/rl_gif'
        sc.driver.find_element_by_id(gif_tab).click()

        try:
            gif_item_cover = 'com.quvideo.xiaoying:id/collage_gif_item_cover'
            WebDriverWait(
                sc.driver,
                60).until(lambda gif: gif.find_element_by_id(gif_item_cover))

            el_gif = sc.driver.find_element_by_id(gif_item_cover)
            el_gif.click()
            time.sleep(5)
            el_gif.click()
        except Exception as e:
            sc.logger.error('GIF图片加载异常', e)
            return False
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击确认按钮')
        right_btn = 'com.quvideo.xiaoying:id/video_title_right_button'
        sc.driver.find_element_by_id(right_btn).click()
        sc.driver.swipe(start_x, start_bottom, start_x, start_bottom, 1000)
        sc.driver.find_element_by_id(right_btn).click()
        sc.logger.info('再次点击确认按钮回到预览页')
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(right_btn)).click()
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(right_btn)).click()

        sc.logger.info('返回创作中心主界面')
        for i in range(3):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-画中画-GIF添加测试完成')

    def test_edit_collage_search(self):
        """剪辑-画中画-GIF搜索."""
        sc.logger.info('剪辑-画中画-GIF搜索')
        fun_name = 'test_edit_collage_search'
        start_x = self.width // 2
        start_bottom = self.height // 3

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()
        # sc.driver.find_element_by_id('com.quvideo.xiaoying:id/img_creation').click()
        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        sc.driver.find_element_by_id(draft_img).click()

        sc.logger.info('点击“剪辑”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("剪辑")')).click()

        t_list = sc.driver.find_elements_by_id('com.quvideo.xiaoying:id/title')
        for el_item in t_list:
            if el_item.text == '画中画':
                sc.logger.info('开始点击画中画')
                el_item.click()
                break

        sc.logger.info('开始添加图片')
        gif_add_btn = 'com.quvideo.xiaoying:id/video_editor_btn_gif_add'
        sc.driver.find_element_by_id(gif_add_btn).click()

        sc.logger.info('点击上方"gif"tab')
        gif_tab = 'com.quvideo.xiaoying:id/rl_gif'
        sc.driver.find_element_by_id(gif_tab).click()

        git_search_btn = 'com.quvideo.xiaoying:id/btn_search_gif'
        el_gif_search = sc.driver.find_element_by_id(git_search_btn)
        el_gif_search.clear()
        el_gif_search.send_keys('a')
        sc.logger.info('用字符"a"搜索gif')
        sc.driver.press_keycode(66)
        try:
            gif_item_cover = 'com.quvideo.xiaoying:id/collage_gif_item_cover'
            WebDriverWait(
                sc.driver,
                60).until(lambda gif: gif.find_element_by_id(gif_item_cover))

            sc.logger.info('下载gif')
            el_gif = sc.driver.find_element_by_id(gif_item_cover)
            el_gif.click()
            time.sleep(5)
            el_gif.click()
            sc.capture_screen(fun_name, self.img_path)
        except Exception as e:
            sc.logger.error('GIF图片加载异常', e)
            sc.capture_screen(fun_name, self.img_path)
            return False
        sc.logger.info('点击确认按钮')
        right_btn = 'com.quvideo.xiaoying:id/video_title_right_button'
        sc.driver.find_element_by_id(right_btn).click()
        sc.driver.swipe(start_x, start_bottom, start_x, start_bottom, 1000)
        sc.driver.find_element_by_id(right_btn).click()
        sc.logger.info('再次点击确认按钮回到预览页')
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(right_btn)).click()
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(right_btn)).click()

        sc.logger.info('返回创作中心主界面')
        for i in range(3):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-画中画-GIF搜索测试完成')

    def test_edit_collage_cancel(self):
        """剪辑-画中画-放弃."""
        sc.logger.info('剪辑-画中画-放弃')
        fun_name = 'test_edit_collage_cancel'

        start_x = self.width // 2
        start_bottom = self.height // 3

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        sc.driver.find_element_by_id(draft_img).click()

        sc.logger.info('点击“剪辑”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("剪辑")')).click()

        t_list = sc.driver.find_elements_by_id('com.quvideo.xiaoying:id/title')
        for el_item in t_list:
            if el_item.text == '画中画':
                sc.logger.info('开始点击画中画')
                el_item.click()
                break

        sc.logger.info('开始添加图片')
        gif_add_btn = 'com.quvideo.xiaoying:id/video_editor_btn_gif_add'
        sc.driver.find_element_by_id(gif_add_btn).click()

        sc.logger.info('添加一张图片')
        pic_cover_item = 'com.quvideo.xiaoying:id/collage_pic_item_cover'
        sc.driver.find_element_by_id(pic_cover_item).click()

        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('点击确认按钮')
        title_right_btn = 'com.quvideo.xiaoying:id/video_title_right_button'
        sc.driver.find_element_by_id(title_right_btn).click()

        sc.driver.swipe(start_x, start_bottom, start_x, start_bottom, 1000)
        time.sleep(1)

        sc.logger.info('放弃所有操作')
        title_left_btn = 'com.quvideo.xiaoying:id/video_title_left_button'
        sc.driver.find_element_by_id(title_left_btn).click()

        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(title_left_btn)).click()
        sc.driver.find_element_by_android_uiautomator('text("确认")').click()

        sc.logger.info('返回创作中心主界面')
        for i in range(3):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-画中画-放弃测试完成')
Esempio n. 4
0
class TestUserLogin(object):
    """用户空间登录测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]
    p_btn = 'com.quvideo.xiaoying:id/img_studio'

    def test_login_origin(self):
        """测试登录页面未登录时的初始状态."""
        sc.logger.info('登录页面初始状态检查测试开始')
        fun_name = 'test_login_origin'

        sc.logger.info('点击个人中心主按钮')
        if sc.first_step(self.p_btn) is True:
            time.sleep(1)
            sc.capture_screen(fun_name, self.img_path)
            assert True
        else:
            assert False

    @staticmethod
    def login_judge():
        """判断是否已经登录."""
        log_btn = 'com.quvideo.xiaoying:id/btn_v6_login'
        try:
            el_login = WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(log_btn))
        except TimeoutException:
            sc.logger.info('未找到“登录/注册”按钮,用户已经登录')
            return True
        else:
            sc.logger.info('找到“登录/注册”按钮,用户未登录')
            return el_login

    @staticmethod
    def qq_login(username, passwd):
        """使用qq登录."""
        sc.logger.info('跳转到QQ登录页面')
        """
        qq_login_id = 'com.tencent.mobileqq:id/name'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(qq_login_id)).click()
        el_qqlogin_list = sc.driver.find_elements_by_id(qq_login_id)

        for el_qq_login in el_qqlogin_list:
            if el_qq_login.text == '添加帐号':
                sc.logger.info('点击“添加帐号”按钮')
                el_qq_login.click()
                break
        """

        # 如果本地QQ未登录,会出现先登录QQ的界面,所以分两种情况处理
        passwd_frame = 'com.tencent.mobileqq:id/password'

        # 本地QQ已经登录的情况
        try:
            """
            WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_android_uiautomator(
                    'text("添加帐号")')).click()
            """
            qq_login_id = 'com.tencent.mobileqq:id/name'
            WebDriverWait(sc.driver, 10, 1).until(
                lambda c_btn: c_btn.find_element_by_id(qq_login_id)).click()
            el_qqlogin_list = sc.driver.find_elements_by_id(qq_login_id)

            for el_qq_login in el_qqlogin_list:
                if el_qq_login.text == '添加帐号':
                    sc.logger.info('点击“添加帐号”按钮')
                    el_qq_login.click()
                    break

            account_frame = 'com.tencent.mobileqq:id/account'
            el_account = WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(account_frame))
        # 本地QQ未登录的情况
        except TimeoutException:
            account_frame_n = 'android.widget.EditText'
            el_account = WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_class_name(account_frame_n))

        el_account.clear()
        sc.logger.info('输入QQ账号:%s', username)
        el_account.send_keys(username)

        WebDriverWait(
            sc.driver, 5,
            1).until(lambda c_btn: c_btn.find_element_by_id(passwd_frame))
        el_passwd = sc.driver.find_element_by_id(passwd_frame)
        sc.logger.info('输入QQ密码:%s', passwd)
        el_passwd.send_keys(passwd)

        qq_log_btn = 'android.widget.Button'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_class_name(qq_log_btn)).click()

        activity_main = 'com.quvideo.xiaoying/.XiaoYingActivity'
        sc.driver.wait_activity(activity_main, 10, 2)

        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':
            qq_btn = 'com.quvideo.xiaoying:id/tv_login_qq_text'
            WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(qq_btn)).click()
            return TestUserLogin.qq_login(username, passwd)
        else:
            return False

    def test_login_qq(self):
        """国内用户测试使用qq登录."""
        sc.logger.info('登录页面QQ登录测试开始')
        sc.first_step(self.p_btn)

        login_res = TestUserLogin.login_judge()
        if login_res is True:
            assert True
        else:
            sc.logger.info('点击“注册/登录”按钮')
            login_res.click()
            WebDriverWait(
                sc.driver, 10,
                1).until(lambda el: el.find_element_by_android_uiautomator(
                    'text("使用其他账号登录")')).click()
            # username = '******'
            username = '******'
            # passwd = 'qa123456'
            passwd = 'qqqqaaaa'
            login_res = TestUserLogin.login_method('qq', username, passwd)

        assert login_res is not False
Esempio n. 5
0
class TestEditText(object):
    """添加字幕的基本操作测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_edit_text(self):
        """剪辑-字幕-添加."""
        sc.logger.info('剪辑-字幕-添加')
        fun_name = 'test_edit_text'

        startx = self.width // 2
        starty = self.height // 3

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“效果”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("效果")')).click()

        sc.logger.info('开始点击字幕')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("字幕")')).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('确认添加字幕')
        time.sleep(6)
        right_btn = 'com.quvideo.xiaoying:id/terminator_right'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda x: x.find_element_by_id(right_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        time.sleep(1)
        sc.driver.swipe(startx, starty, startx, starty, 1000)

        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(right_btn)).click()
        opt_btn = 'com.quvideo.xiaoying:id/tv_subtitle_op_btn'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_id(opt_btn)).click()
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(right_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-字幕-添加测试完成')

    def test_edit_text_cancel(self):
        """剪辑-字幕-放弃."""
        sc.logger.info('剪辑-字幕-放弃')
        fun_name = 'test_edit_text_cancel'
        startx = self.width // 2
        starty = self.height // 3

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“效果”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("效果")')).click()

        sc.logger.info('开始点击字幕')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("字幕")')).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('确认添加字幕')
        time.sleep(6)
        right_btn = 'com.quvideo.xiaoying:id/terminator_right'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda x: x.find_element_by_id(right_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        time.sleep(1)
        sc.driver.swipe(startx, starty, startx, starty, 1000)

        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(right_btn)).click()

        opt_btn = 'com.quvideo.xiaoying:id/tv_subtitle_op_btn'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_id(opt_btn)).click()

        sc.logger.info('取消操作')
        left_btn = 'com.quvideo.xiaoying:id/terminator_left'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_id(left_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('确认取消')
        pos_btn = 'com.quvideo.xiaoying:id/xiaoying_alert_dialog_positive'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_id(pos_btn)).click()

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-字幕-放弃测试完成')
Esempio n. 6
0
class TestUserWorks(object):
    """测试用户空间作品的测试类,分步截图."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_works_ui(self):
        """测试用户空间作品页面的初始状态."""
        sc.logger.info('用户空间作品页面初始状态检查测试开始')
        fun_name = 'test_works_ui'

        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_works_list(self):
        """作品页面list view测试."""
        sc.logger.info('用户空间作品页面list view测试开始')
        fun_name = 'test_works_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_works_list_function(self):
        """作品页面list view内功能测试."""
        sc.logger.info('作品页面list view功能测试开始')
        fun_name = 'test_works_list'

        start_x = self.width // 2
        start_bottom = self.height - self.height // 8
        try:
            el_like_btn = sc.driver.find_element_by_id(
                'com.quvideo.xiaoying:id/img_like')
        except NoSuchElementException:
            sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300)
            time.sleep(1)
            el_like_btn = sc.driver.find_element_by_id(
                'com.quvideo.xiaoying:id/img_like')
        # 操作前先截图记录
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击点赞按钮')
        el_like_btn.click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击分享按钮')
        el_share_btn = 'com.quvideo.xiaoying:id/xiaoying_com_text_share_count'
        el_share = sc.driver.find_element_by_id(el_share_btn)
        el_share.click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击下载按钮')
        time.sleep(1)
        sc.driver.find_element_by_android_uiautomator('text("下载")').click()
        sc.capture_screen(fun_name, self.img_path)
        sc.driver.press_keycode(4)

        sc.logger.info('点击公开/不公开按钮')
        time.sleep(1)
        el_more_btn = 'com.quvideo.xiaoying:id/btn_more'
        el_more = sc.driver.find_element_by_id(el_more_btn)
        el_more.click()
        sc.capture_screen(fun_name, self.img_path)
        try:
            el_privacy = sc.driver.find_element_by_android_uiautomator(
                'text("设置为不公开")')
        except NoSuchElementException:
            el_privacy = sc.driver.find_element_by_android_uiautomator(
                'text("设置为公开")')
        el_privacy.click()
        assert el_privacy is not None
Esempio n. 7
0
class TestCreationUI(object):
    """创作页面的测试类,分步截图"""
    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_origin(self):
        """测试创作页面初始UI状态"""
        sc.logger.info('创作页面初始状态检查测试开始')
        fun_name = 'test_origin'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.capture_screen(fun_name, self.img_path)

    def test_refresh(self):
        """测试下拉刷新"""
        sc.logger.info('创作页面下拉刷新测试开始')
        fun_name = 'test_refresh'
        start_x = self.width // 2
        start_y = self.height // 8
        result = sc.swipe_by_ratio(start_x, start_y, 'down', 0.6, 600)

        time.sleep(1)
        sc.capture_screen(fun_name, self.img_path)
        assert result is True

    def test_swipe_vertical(self):
        """测试上下方向的滑动"""
        sc.logger.info('创作页面上下滑动测试开始')
        fun_name = 'test_swipe_vertical'
        start_x = self.width // 2
        start_y = self.height // 8
        start_bottom = self.height - start_y

        # 先上滑
        sc.logger.info('上滑截图开始')
        result_up = sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 300)
        time.sleep(1)
        sc.capture_screen(fun_name, self.img_path)

        # 再下滑,同理
        sc.logger.info('下滑截图开始')
        result_down = sc.swipe_by_ratio(start_x, start_y, 'down', 0.7, 300)
        time.sleep(.300)
        sc.capture_screen(fun_name, self.img_path)
        assert result_up and result_down is True

    def test_origin_home(self):
        """测试创作页home tab的功能"""
        sc.logger.info('创作页面home tab功能检查测试开始')
        fun_name = 'test_origin_home'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 8

        # 先上滑一点
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500)
        time.sleep(1)
        sc.capture_screen(fun_name, self.img_path)
        # 再按home tab
        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.capture_screen(fun_name, self.img_path)
Esempio n. 8
0
class TestEditClipsAdd(object):
    """镜头添加相关操作的测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_edit_add_clips(self):
        """剪辑-添加镜头-相册添加."""
        sc.logger.info('剪辑-添加镜头-相册添加')
        fun_name = 'test_edit_add_clips'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“镜头编辑”')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("镜头编辑")')).click()

        sc.logger.info('点击添加镜头的加号标识')
        clip_add_btn = 'com.quvideo.xiaoying:id/clipedit_add_btn'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(clip_add_btn)).click()

        sc.logger.info('点击相册图标')
        gallary_btn = 'com.quvideo.xiaoying:id/layout_move_gallery'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(gallary_btn)).click()

        sc.logger.info('点击“视频”下拉按钮')
        sc.driver.find_element_by_android_uiautomator('text("视频")').click()
        sc.logger.info('点击“图片”')
        sc.driver.find_element_by_android_uiautomator('text("图片")').click()

        mask_img = 'com.quvideo.xiaoying:id/img_click_mask'
        element_list = sc.driver.find_elements_by_id(mask_img)

        if len(element_list) >= 2:
            element_list = element_list[:2]

        for element_em in element_list:
            element_em.click()
            time.sleep(1)
            sc.capture_screen(fun_name, self.img_path)

        sc.driver.find_element_by_android_uiautomator('text("下一步")').click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)

        sc.logger.info('剪辑-添加镜头-相册添加测试完成')

    def test_edit_clips_shot(self):
        """剪辑-添加镜头-拍摄添加."""
        sc.logger.info('剪辑-添加镜头-拍摄添加')
        fun_name = 'test_edit_clips_shot'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“镜头编辑”')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("镜头编辑")')).click()

        sc.logger.info('点击添加镜头的加号标识')
        clip_add_btn = 'com.quvideo.xiaoying:id/clipedit_add_btn'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(clip_add_btn)).click()

        camera_btn = 'com.quvideo.xiaoying:id/layout_move_camera'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(camera_btn)).click()

        rec_btn = 'com.quvideo.xiaoying:id/btn_rec'
        el_cp = WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(rec_btn))
        # 长按拍摄
        sc.logger.info('长按拍摄5s')
        actions = TouchAction(sc.driver)
        actions.long_press(el_cp, None, None, 5000).release().perform()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击确认键')
        next_btn = 'com.quvideo.xiaoying:id/cam_btn_next'
        sc.driver.find_element_by_id(next_btn).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-添加镜头-拍摄添加测试完成')

    def test_edit_clips_cancel(self):
        """剪辑-添加镜头-放弃."""
        sc.logger.info('剪辑-添加镜头-放弃')
        fun_name = 'test_edit_clips_cancel'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“镜头编辑”')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("镜头编辑")')).click()

        sc.logger.info('点击添加镜头的加号标识')
        clip_add_btn = 'com.quvideo.xiaoying:id/clipedit_add_btn'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(clip_add_btn)).click()

        camera_btn = 'com.quvideo.xiaoying:id/layout_move_camera'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(camera_btn)).click()

        rec_btn = 'com.quvideo.xiaoying:id/btn_rec'
        el_cp = WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(rec_btn))
        # 长按拍摄
        sc.logger.info('长按拍摄5s')
        actions = TouchAction(sc.driver)
        actions.long_press(el_cp, None, None, 5000).release().perform()
        sc.capture_screen(fun_name, self.img_path)

        next_btn = 'com.quvideo.xiaoying:id/cam_btn_next'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(next_btn)).click()

        left_btn = 'com.quvideo.xiaoying:id/editor_back_btn'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(left_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('剪辑-添加镜头-测试完成')
Esempio n. 9
0
class TestEditCreate(object):
    """edit创建视频的测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_create_craft(self):
        """创建一个草稿视频."""
        sc.logger.info('创建一个草稿视频')
        fun_name = 'test_create_craft'
        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“剪辑”按钮')
        editor_btn = 'com.quvideo.xiaoying:id/btn1'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(editor_btn)).click()

        mask_img = 'com.quvideo.xiaoying:id/btn_item_status'
        el_video_list = sc.driver.find_elements_by_id(mask_img)
        if len(el_video_list) >= 2:
            el_video_list = el_video_list[:2]
        for i in range(2):
            el_video_list[i].click()

        sc.logger.info('点击“视频”按钮')
        type_btn = 'com.quvideo.xiaoying:id/gallery_type'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_id(type_btn)).click()
        sc.logger.info('点击“图片”按钮')
        img_type_btn = 'com.quvideo.xiaoying:id/xiaoying_gallery_photo_tab'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(img_type_btn)).click()

        el_img_list = sc.driver.find_elements_by_id(mask_img)
        if len(el_img_list) >= 2:
            el_img_list = el_img_list[:2]

        for el_img_list in el_img_list:
            el_img_list.click()
            time.sleep(1)
            sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击“下一步”按钮')
        import_n_btn = 'com.quvideo.xiaoying:id/tv_next'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(import_n_btn)).click()

        sc.logger.info('点击“存草稿”按钮')
        draft_btn = 'com.quvideo.xiaoying:id/editor_draft'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(draft_btn)).click()

        sc.logger.info('返回创作中心主界面')
        sc.driver.press_keycode(4)
        sc.logger.info('创建一个草稿视频完成')
Esempio n. 10
0
class TestCameraCollage(object):
    """camera的画中画功能测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]
    c_btn = 'com.quvideo.xiaoying:id/img_creation'

    def test_collage_settings(self):
        """拍摄-画中画拍摄-设置."""
        sc.logger.info('拍摄-画中画拍摄-设置')
        fun_name = 'test_collage_settings'
        start_x = self.width - self.width // 10
        start_bottom = self.height // 2

        sc.logger.info('点击创作中心主按钮')
        sc.first_step(self.c_btn)

        sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.8, 500)
        sc.logger.info('点击"画中画拍摄"')
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_android_uiautomator(
                'text("画中画拍摄")')).click()
        # sc.driver.find_element_by_android_uiautomator('text("画中画拍摄")').click()

        sc.logger.info('切换样式')
        effect_img = 'com.quvideo.xiaoying:id/img_effect'
        content_img = 'com.quvideo.xiaoying:id/wheel_img_content'
        sc.driver.find_element_by_id(effect_img).click()
        el_wheel = sc.driver.find_element_by_id(content_img)
        sc.logger.info('点击第一个样式效果')
        el_wheel.click()
        sc.driver.press_keycode(4)
        time.sleep(1)
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('摄像位置互换')
        mode_img = 'com.quvideo.xiaoying:id/img_mode'
        sc.driver.find_element_by_id(mode_img).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('切换前后置')
        switch_btn = 'com.quvideo.xiaoying:id/img_switch'
        sc.driver.find_element_by_id(switch_btn).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('camera设置')
        setting_btn = 'com.quvideo.xiaoying:id/img_setting'
        sc.driver.find_element_by_id(setting_btn).click()
        try:
            flash_btn = 'com.quvideo.xiaoying:id/v4_img_flash'
            sc.driver.find_element_by_id(flash_btn).click()
        except NoSuchElementException:
            sc.logger.info('前置摄像头不支持闪光灯')

        sc.logger.info('点击倒计时按钮')
        timer_btn = 'com.quvideo.xiaoying:id/v4_img_timer'
        sc.driver.find_element_by_id(timer_btn).click()
        sc.logger.info('点击曝光锁定按钮')
        clock_btn = 'com.quvideo.xiaoying:id/v4_img_aelock'
        sc.driver.find_element_by_id(clock_btn).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.driver.press_keycode(4)
        time.sleep(2)
        sc.logger.info('点击返回按钮返回创作中心主页面')
        sc.driver.press_keycode(4)

        sc.logger.info('拍摄-画中画拍摄-设置完成')

    def test_collage_shot(self):
        """拍摄-画中画拍摄-拍摄."""
        sc.logger.info('拍摄-画中画拍摄-拍摄')
        fun_name = 'test_collage_shot'

        sc.logger.info('点击"画中画拍摄"')
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_android_uiautomator(
                'text("画中画拍摄")')).click()
        # sc.driver.find_element_by_android_uiautomator('text("画中画拍摄")').click()
        el_cp = sc.driver.find_element_by_id('com.quvideo.xiaoying:id/btn_rec')
        # 长按拍摄5s
        sc.logger.info('长按拍摄5s')
        actions = TouchAction(sc.driver)
        actions.long_press(el_cp, None, None, 5000).release().perform()
        sc.capture_screen(fun_name, self.img_path)

        pip_add_btn = 'com.quvideo.xiaoying:id/xiaoying_cam_img_pip_add'
        sc.driver.find_element_by_id(pip_add_btn).click()
        sc.logger.info('添加第二段视频')
        el_cp.click()
        try:
            WebDriverWait(sc.driver, 30).until(
                lambda x: x.find_element_by_android_uiautomator('text("存草稿")'))
            sc.logger.info('点击“存草稿”按钮')
            sc.driver.find_element_by_android_uiautomator(
                'text("存草稿")').click()
            sc.capture_screen(fun_name, self.img_path)

            sc.logger.info('点击左上角返回按钮返回创作中心主页')
            left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
            sc.driver.find_element_by_id(left_btn).click()
            sc.logger.info('拍摄-音乐视频拍摄完成')
        except Exception as e:
            sc.logger.error('拍摄完成跳转预览页异常', e)
            sc.driver.press_keycode(4)
            return False

        sc.logger.info('拍摄-画中画拍摄-拍摄完成')

    def test_collage_album(self):
        """拍摄-画中画拍摄-拍摄."""
        sc.logger.info('拍摄-画中画拍摄-相册视频')
        fun_name = 'test_collage_album'

        sc.logger.info('点击"画中画拍摄"')
        sc.driver.find_element_by_android_uiautomator('text("画中画拍摄")').click()
        sc.logger.info('从相册选择视频')
        gallery_btn = 'com.quvideo.xiaoying:id/xiaoying_cam_btn_pip_gallery'
        sc.driver.find_element_by_id(gallery_btn).click()

        sc.logger.info('点击相册第一个视频')
        mask_btn = 'com.quvideo.xiaoying:id/btn_item_status'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(mask_btn)).click()
        sc.logger.info('点击“添加”按钮')
        import_btn = 'com.quvideo.xiaoying:id/tv_next'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(import_btn)).click()

        rec_btn = 'com.quvideo.xiaoying:id/btn_rec'
        try:
            el_capture = WebDriverWait(sc.driver, 60).until(
                lambda V_improt: V_improt.find_element_by_id(rec_btn))
        except TimeoutError as t:
            sc.logger.error('导入视频超时', t)
            return False
        except Exception as e:
            sc.logger.error('导入视频出错', e)
            return False

        sc.logger.info('添加第二段视频')
        # 点拍
        el_capture.click()
        try:
            WebDriverWait(sc.driver, 60).until(
                lambda x: x.find_element_by_android_uiautomator('text("存草稿")'))
            sc.logger.info('点击"存草稿"按钮')
            sc.driver.find_element_by_android_uiautomator(
                'text("存草稿")').click()

            sc.logger.info('点击左上角返回按钮返回创作中心主页面')
            left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
            sc.driver.find_element_by_id(left_btn).click()
            sc.capture_screen(fun_name, self.img_path)
            sc.logger.info('拍摄-音乐视频拍摄完成')
        except Exception as e:
            sc.logger.error('拍摄完成跳转预览页异常', e)
            sc.driver.press_keycode(4)
            return False

        sc.logger.info('拍摄-画中画拍摄-相册视频完成')

    def test_collage_edit(self):
        """拍摄-画中画编辑."""
        sc.logger.info('拍摄-画中画编辑')
        fun_name = 'test_collage_edit'

        sc.logger.info('点击"画中画编辑"')
        sc.driver.find_element_by_android_uiautomator('text("画中画编辑")').click()

        sc.logger.info('选择第2个样式')
        style_btn = 'com.quvideo.xiaoying:id/xiaoying_imagebtn_style_thumb'
        el_style_list = sc.driver.find_elements_by_id(style_btn)
        el_style_list[1].click()
        sc.capture_screen(fun_name, self.img_path)
        sc.driver.press_keycode(4)
Esempio n. 11
0
class TestCameraMusic(object):
    """camera音乐视频的基本测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]
    c_btn = 'com.quvideo.xiaoying:id/img_creation'

    def test_music_shot(self):
        """拍摄-音乐视频(3:4)."""
        sc.logger.info('拍摄-音乐视频(3:4)')
        fun_name = 'test_music_shot'
        start_x = self.width - self.width // 10
        start_bottom = self.height // 2

        sc.logger.info('点击创作中心主按钮')
        sc.first_step(self.c_btn)

        time.sleep(2)
        sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.8, 500)
        sc.logger.info('点击“音乐视频”')
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_android_uiautomator(
                'text("音乐视频")')).click()
        # sc.driver.find_element_by_android_uiautomator('text("音乐视频")').click()

        sc.logger.info('点击视频比例按钮,切换到3:4')
        ratio_btn = 'com.quvideo.xiaoying:id/cam_btn_ratio'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(ratio_btn)).click()

        sc.logger.info('切换摄像头')
        switch_btn = 'com.quvideo.xiaoying:id/img_switch'
        sc.driver.find_element_by_id(switch_btn).click()

        sc.logger.info('点击“请选择音乐”按钮')
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_android_uiautomator(
                'text("请选择音乐")')).click()

        download_btn = 'com.quvideo.xiaoying:id/music_item_download'
        try:
            el_download = WebDriverWait(sc.driver, 10, 1).until(
                                lambda el: el.find_element_by_id(download_btn))
        except TimeoutException:
            sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.4, 500)
            el_download = WebDriverWait(sc.driver, 10, 1).until(
                                lambda el: el.find_element_by_id(download_btn))
        sc.logger.info('点击第一个下载按钮')
        el_download.click()

        music_row = 'com.quvideo.xiaoying:id/music_item_name'
        sc.logger.info('点击第一首音乐名')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(music_row)).click()

        sc.logger.info('点击播放/暂停按钮')
        play_btn = 'com.quvideo.xiaoying:id/music_item_play_state'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(play_btn)).click()

        sc.logger.info('点击“添加”按钮')
        use_btn = 'com.quvideo.xiaoying:id/music_item_use'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(use_btn)).click()
        el_cp = WebDriverWait(sc.driver, 10, 1).until(
            lambda x: x.find_element_by_id('com.quvideo.xiaoying:id/btn_rec'))

        # 长按拍摄5s
        sc.logger.info('长按拍摄5s')
        actions = TouchAction(sc.driver)
        actions.long_press(el_cp, None, None, 5000).release().perform()
        sc.capture_screen(fun_name, self.img_path)
        try:
            sc.logger.info('点击确认按钮')
            n_btn = 'com.quvideo.xiaoying:id/cam_btn_next'
            WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(n_btn)).click()
        except TimeoutException:
            sc.logger.info('音乐时长较短,已自动跳转预览页')
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击“存草稿”按钮')
        draft_btn = 'com.quvideo.xiaoying:id/editor_draft'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(draft_btn)).click()

        left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(left_btn)).click()
        sc.logger.info('拍摄-音乐视频(3:4)完成')

    def test_music_change(self):
        """拍摄-音乐视频-更换音乐重录."""
        sc.logger.info('拍摄-音乐视频-更换音乐重录')
        fun_name = 'test_music_change'
        start_x = self.width - self.width // 10
        start_bottom = self.height // 2

        time.sleep(2)
        sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.8, 500)

        sc.logger.info('点击“音乐视频”')
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_android_uiautomator(
                'text("音乐视频")')).click()

        sc.logger.info('点击“请选择音乐”')
        music_ctr_btn = 'com.quvideo.xiaoying:id/icon_tool_music_control_arrow'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_id(music_ctr_btn)).click()

        sc.logger.info('点击第一首音乐名')
        music_name_btn = 'com.quvideo.xiaoying:id/music_item_name'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_id(music_name_btn)).click()

        sc.logger.info('点击播放/暂停按钮')
        play_btn = 'com.quvideo.xiaoying:id/music_item_play_state'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_id(play_btn)).click()

        sc.logger.info('点击“添加”按钮')
        use_btn = 'com.quvideo.xiaoying:id/music_item_use'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_id(use_btn)).click()

        el_cp = WebDriverWait(sc.driver, 5, 1).until(
            lambda x: x.find_element_by_id('com.quvideo.xiaoying:id/btn_rec'))

        # 长按拍摄5s
        sc.logger.info('长按拍摄5s')
        actions = TouchAction(sc.driver)
        actions.long_press(el_cp, None, None, 5000).release().perform()
        sc.capture_screen(fun_name, self.img_path)

        try:
            sc.logger.info('点击确认按钮')
            next_btn = 'com.quvideo.xiaoying:id/cam_btn_next'
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(next_btn)).click()
        except NoSuchElementException:
            sc.logger.info('音乐时长较短,已自动跳转预览页')
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击左上角返回按钮')
        left_btn = 'com.quvideo.xiaoying:id/editor_back_btn'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_id(left_btn)).click()

        sc.logger.info('点击音乐标题')
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_id(music_ctr_btn)).click()
        try:
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_android_uiautomator(
                    'text("更换音乐重录")')).click()
        except TimeoutException:
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(music_ctr_btn)).click()

            tl = sc.driver.find_elements_by_id('com.quvideo.xiaoying:id/title')
            for el_title in tl:
                if el_title.text == '更换音乐重录':
                    sc.logger.info('点击“更换音乐重录”')
                    el_title.click()

        sc.logger.info('点击音乐名')
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_id(music_name_btn)).click()

        sc.logger.info('点击播放/暂停按钮')
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_id(play_btn)).click()

        sc.logger.info('点击“添加”按钮')
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_id(use_btn)).click()

        el_cp = WebDriverWait(sc.driver, 5, 1).until(
            lambda x: x.find_element_by_id('com.quvideo.xiaoying:id/btn_rec'))

        # 长按拍摄5s
        sc.logger.info('长按拍摄5s')
        actions = TouchAction(sc.driver)
        actions.long_press(el_cp, None, None, 5000).release().perform()
        sc.capture_screen(fun_name, self.img_path)

        try:
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(next_btn)).click()
            sc.logger.info('点击“确认”按钮')
        except NoSuchElementException:
            sc.logger.info('音乐时长较短,已自动跳转预览页')
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击“存草稿”按钮')
        draft_btn = 'com.quvideo.xiaoying:id/editor_draft'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(draft_btn)).click()

        sc.logger.info('点击左上角返回按钮返回创作中心主页面')
        back_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(back_btn)).click()
        sc.logger.info('拍摄-音乐视频-更换音乐重录完成')

    def test_music_redo(self):
        """拍摄-音乐视频-重新录制."""
        sc.logger.info('拍摄-音乐视频-直接重录')
        fun_name = 'test_music_redo'

        music_ctr_btn = 'com.quvideo.xiaoying:id/icon_tool_music_control_arrow'
        music_name_btn = 'com.quvideo.xiaoying:id/music_item_name'
        play_btn = 'com.quvideo.xiaoying:id/music_item_play_state'
        use_btn = 'com.quvideo.xiaoying:id/music_item_use'
        next_btn = 'com.quvideo.xiaoying:id/cam_btn_next'
        left_btn = 'com.quvideo.xiaoying:id/editor_back_btn'

        sc.logger.info('点击“音乐视频”')
        sc.driver.find_element_by_android_uiautomator('text("音乐视频")').click()
        sc.logger.info('点击“请选择音乐”')
        sc.driver.find_element_by_id(music_ctr_btn).click()

        el_music_name = sc.driver.find_element_by_id(music_name_btn)
        sc.logger.info('点击音乐标题')
        el_music_name.click()
        sc.logger.info('点击播放/暂停按钮')
        sc.driver.find_element_by_id(play_btn).click()
        sc.logger.info('点击“添加”按钮')
        sc.driver.find_element_by_id(use_btn).click()
        el_cp = sc.driver.find_element_by_id('com.quvideo.xiaoying:id/btn_rec')
        # 长按拍摄5s
        sc.logger.info('长按拍摄5s')
        actions = TouchAction(sc.driver)
        actions.long_press(el_cp, None, None, 5000).release().perform()
        sc.capture_screen(fun_name, self.img_path)

        try:
            sc.logger.info('点击确认按钮')
            sc.driver.find_element_by_id(next_btn).click()
        except NoSuchElementException:
            sc.logger.info('音乐时长较短,已自动跳转预览页')
        sc.logger.info('点击左上角返回按钮返回')
        sc.driver.find_element_by_id(left_btn).click()

        sc.logger.info('点击音乐标题')
        music_title = 'com.quvideo.xiaoying:id/music_title'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda c_btn: c_btn.find_element_by_id(music_title)).click()
        # sc.driver.find_element_by_id('com.quvideo.xiaoying:id/icon_tool_music_control_arrow').click()
        try:
            WebDriverWait(sc.driver, 5, 1).until(
                lambda c_btn: c_btn.find_element_by_android_uiautomator(
                    'text("直接重录")')).click()
            # sc.driver.find_element_by_android_uiautomator('text("直接重录")').click()
        except Exception as err:
            sc.driver.find_element_by_id(music_ctr_btn).click()
            sc.capture_screen(fun_name, self.img_path)
            title_el = 'com.quvideo.xiaoying:id/title'
            WebDriverWait(sc.driver, 5, 1).until(
                lambda c_btn: c_btn.find_elements_by_id(title_el))
            el_title_list = sc.driver.find_elements_by_id(title_el)
            for el_title in el_title_list:
                if el_title.text == '直接重录':
                    sc.logger.info('直接重录')
                    el_title.click()
                    break

        sc.capture_screen(fun_name, self.img_path)

        sc.driver.press_keycode(4)
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击确认放弃操作')
        p_btn = 'com.quvideo.xiaoying:id/buttonDefaultPositive'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_id(p_btn)).click()
        sc.driver.press_keycode(4)
        sc.logger.info('拍摄-音乐视频-直接重录完成')
Esempio n. 12
0
class TestPlanetRec(object):
    """小影圈推荐页的测试类,分步截图."""

    width, heigh = sc.get_size()
    img_path = sc.path_lists[0]

    def test_planet_page(self):
        """小影圈推荐页面初始状态测试."""
        sc.logger.info('小影圈推荐页面初始状态检查开始')
        fun_name = 'test_planet_page'

        sc.logger.info('点击小影圈主按钮')
        p_btn = 'com.quvideo.xiaoying:id/img_find'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(p_btn)).click()

        sc.logger.info('小影圈推荐页面初始状态截图开始')
        sc.capture_screen(fun_name, self.img_path)

    def test_refresh(self):
        """测试下拉刷新."""
        sc.logger.info('推荐页面下拉刷新测试开始')
        fun_name = 'test_refresh'
        start_x = self.width // 2
        start_y = self.heigh // 8

        time.sleep(1)
        result = sc.swipe_by_ratio(start_x, start_y, 'down', 0.6, 700)

        time.sleep(1)
        sc.logger.info('小影圈推荐页面下拉刷新截图开始')
        sc.capture_screen(fun_name, self.img_path)
        assert result is True

    def test_swipe_vertical(self):
        """测试上下方向的滑动."""
        sc.logger.info('推荐页面滑动测试开始')
        fun_name = 'test_swipe_vertical'
        start_x = self.width // 2
        start_y = self.heigh // 8
        start_bottom = self.heigh - start_y

        # 先上滑
        sc.logger.info('上滑截图开始')
        time.sleep(1)
        result_up = sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 500)
        sc.capture_screen(fun_name, self.img_path)

        # 再下滑,同理
        sc.logger.info('下滑截图开始')
        result_down = sc.swipe_by_ratio(start_x, start_y, 'down', 0.3, 500)
        time.sleep(1)
        sc.capture_screen(fun_name, self.img_path)
        assert result_up and result_down is True

    def test_origin_home(self):
        """推荐页tab的功能."""
        sc.logger.info('推荐页面tab功能检查测试开始')
        fun_name = 'test_origin_home'
        start_x = self.width // 2
        start_bottom = self.heigh - self.heigh // 8

        # 先上滑一点
        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500)
        sc.logger.info('小影圈推荐页面轻微上滑截图开始')
        sc.capture_screen(fun_name, self.img_path)
        # 再按推荐tab
        sc.logger.info('开始查找小影圈推荐tab')
        WebDriverWait(
            sc.driver,
            30).until(lambda el: el.find_element_by_android_uiautomator(
                'text("推荐")')).click()
        time.sleep(1)
        sc.logger.info('小影圈推荐页面点击“推荐”tab截图开始')
        sc.capture_screen(fun_name, self.img_path)

    def test_recommend_video(self):
        """测试推荐页面的视频."""
        sc.logger.info('推荐页面视频检查开始')
        fun_name = 'test_recommend_video'

        thumb_img = 'com.quvideo.xiaoying:id/img_video_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(thumb_img)).click()
        time.sleep(1)
        sc.logger.info('小影圈推荐页面进入视频feed流截图开始')
        sc.capture_screen(fun_name, self.img_path)
        # sc.driver.back()
        sc.logger.info('点击返回键')
        sc.driver.press_keycode(4)

    def test_recommend_user(self):
        """测试推荐页面的用户."""
        sc.logger.info('推荐页面用户检查开始')
        fun_name = 'test_recommend_user'

        avatar_img = 'com.quvideo.xiaoying:id/img_owner_avatar'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(avatar_img)).click()
        time.sleep(1)
        sc.logger.info('小影圈推荐页面点击用户头像进入用户空间截图开始')
        sc.capture_screen(fun_name, self.img_path)
        # sc.driver.back()
        sc.logger.info('点击返回键')
        sc.driver.press_keycode(4)
Esempio n. 13
0
class TestCreationTemplate(object):
    """创作页面素材中心测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    @classmethod
    def template_download(cls, type, download_id):
        """素材下载."""
        sc.logger.info('%s下载测试', type)
        """
        sc.logger.info('向下滑动')
        start_x = cls.width // 2
        start_bottom = cls.height - cls.height // 5
        while True:
            try:
                sc.driver.find_element_by_android_uiautomator('text("没有更多了…")').click()
                break
            except NoSuchElementException:
                sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 300)
        sc.logger.info('已经滑动到%s最底部了', type)
        """

        sc.logger.info('开始下载')
        el_template_down = sc.driver.find_element_by_id(download_id)
        try:
            el_template_down.click()
        except NoSuchElementException:
            sc.logger.info('当前页面所有素材已下载完成')
            el_template_use = sc.driver.find_elements_by_android_uiautomator(
                'text("使用")')
            el_template_use.click()
            return True

        sc.logger.info('检查素材下载是否成功')
        try:
            WebDriverWait(
                sc.driver,
                30).until(lambda theme_use: theme_use.
                          find_element_by_android_uiautomator('text("使用")'))
        except TimeoutError as t:
            sc.logger.info('素材下载超时', t)
            return False
        except Exception as e:
            sc.logger.info('素材下载失败', e)
            return False

        sc.logger.info('%s下载测试完成', type)

    @classmethod
    def template_use(cls, type):
        """使用素材并进入预览页测试."""
        sc.logger.info('%s使用素材并进入预览页测试', type)
        time.sleep(1)
        fun_name = 'template_use'

        try:
            sc.logger.info('点击“使用”按钮')
            el_template_use = sc.driver.find_element_by_android_uiautomator(
                'text("使用")')
            el_template_use.click()
        except NoSuchElementException:
            sc.logger.info('未找到已下载的素材')
            return False

        sc.capture_screen(fun_name, cls.img_path)
        el_videos = sc.driver.find_elements_by_id(
            'com.quvideo.xiaoying:id/img_click_mask')
        for i in range(2):
            time.sleep(1)
            el_videos[i].click()
            sc.driver.find_element_by_id(
                'com.quvideo.xiaoying:id/imgbtn_import').click()
            try:
                WebDriverWait(sc.driver, 60).until(
                    lambda V_improt: V_improt.
                    find_element_by_android_uiautomator('text("下一步")'))
            except TimeoutError as t:
                sc.logger.error('导入视频超时', t)
                return False
            except Exception as e:
                sc.logger.error('导入视频出错', e)
                return False
        sc.driver.find_element_by_android_uiautomator('text("下一步")').click()

        sc.logger.info('%s使用并进入预览页测试完成', type)

    @classmethod
    def theme_manager(cls, type, delete_id):
        """主题管理."""
        sc.logger.info('%s删除测试', type)
        fun_name = 'theme_manager'

        sc.capture_screen(fun_name, cls.img_path)
        try:
            sc.driver.find_element_by_id(
                'com.quvideo.xiaoying:id/text_right').click()
        except NoSuchElementException:
            sc.driver.find_element_by_id(
                'com.quvideo.xiaoying:id/right_mgr').click()
        sc.capture_screen(fun_name, cls.img_path)

        el_del_template = sc.driver.find_element_by_id(delete_id)
        el_del_template.click()
        try:
            sc.driver.find_element_by_android_uiautomator('text("确认")').click()
        except NoSuchElementException:
            sc.logger.info('%s删除不需要确认', type)
        sc.capture_screen(fun_name, cls.img_path)
        sc.logger.info('返回创作中心页面')
        for i in range(3):
            time.sleep(1)
            sc.driver.press_keycode(4)

        sc.logger.info('%s删除测试完成', type)

    def test_template_theme(self):
        """素材中心-主题."""
        sc.logger.info('进入素材中心-主题')
        fun_name = 'test_template_theme'

        time.sleep(1)
        sc.logger.info('点击创作中心主按钮')
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/img_creation').click()
        sc.logger.info('点击“素材中心”')
        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        sc.logger.info('点击“主题”')
        sc.driver.find_element_by_android_uiautomator('text("主题")').click()

        try:
            btn_download = 'com.quvideo.xiaoying:id/imgbtn_download'
            sc.driver.find_element_by_id(btn_download)
            self.template_download('主题', btn_download)
        except NoSuchElementException:
            sc.logger.info('此页素材已经下载完毕了')

        time.sleep(1)
        self.template_use('主题')
        time.sleep(5)

        sc.logger.info('点击“存草稿”')
        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()
        sc.logger.info('点击左上角返回创作中心主界面')
        time.sleep(2)
        sc.driver.press_keycode(4)
        time.sleep(2)

        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        sc.driver.find_element_by_android_uiautomator('text("主题")').click()

        sc.logger.info('删除刚刚下载的主题')
        sc.capture_screen(fun_name, self.img_path)
        self.theme_manager(
            '主题', 'com.quvideo.xiaoying:id/template_caption_grid_btn_update')

    def test_template_subtitle(self):
        """素材中心-字幕."""
        sc.logger.info('素材中心-字幕')
        fun_name = 'test_template_subtitle'

        time.sleep(1)
        sc.logger.info('点击创作中心主按钮')
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/img_creation').click()
        sc.logger.info('点击“素材中心”')
        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        sc.logger.info('点击“字幕”')
        sc.driver.find_element_by_android_uiautomator('text("字幕")').click()

        sc.logger.info('下载并使用字幕')
        try:
            btn_down = 'com.quvideo.xiaoying:id/template_pack_download_progress'
            sc.driver.find_element_by_id(btn_down)
            self.template_download('字幕', btn_down)
            sc.capture_screen(fun_name, self.img_path)
        except NoSuchElementException:
            sc.logger('字幕已经下载完毕了')
        self.template_use('字幕')
        time.sleep(5)

        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click()
        time.sleep(1)
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click()
        time.sleep(2)
        sc.logger.info('点击“存草稿”')
        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()
        time.sleep(2)
        sc.driver.press_keycode(4)

        time.sleep(1)
        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        sc.driver.find_element_by_android_uiautomator('text("字幕")').click()

        sc.logger.info('删除刚刚下载的字幕')
        sc.capture_screen(fun_name, self.img_path)
        self.theme_manager('字幕', 'com.quvideo.xiaoying:id/img_delete')

    def test_template_effect(self):
        """素材中心-特效."""
        sc.logger.info('素材中心-特效')
        fun_name = 'test_template_effect'

        time.sleep(1)
        sc.logger.info('点击创作中心主按钮')
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/img_creation').click()
        sc.logger.info('点击“素材中心”')
        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        sc.logger.info('点击“特效”')
        sc.driver.find_element_by_android_uiautomator('text("特效")').click()

        self.template_download(
            '特效', 'com.quvideo.xiaoying:id/template_pack_download_progress')
        self.template_use('特效')

        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click()
        time.sleep(2)
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click()
        time.sleep(2)
        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()
        time.sleep(2)
        sc.driver.press_keycode(4)

        time.sleep(1)
        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        sc.driver.find_element_by_android_uiautomator('text("特效")').click()

        sc.logger.info('删除刚刚下载的特效')
        sc.capture_screen(fun_name, self.img_path)
        self.theme_manager(
            '特效', 'com.quvideo.xiaoying:id/template_caption_grid_btn_update')

    def test_template_filter(self):
        """素材中心-滤镜."""
        sc.logger.info('素材中心-滤镜')
        fun_name = 'test_template_filter'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 5

        time.sleep(1)
        sc.logger.info('点击创作中心主按钮')
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/img_creation').click()
        sc.logger.info('点击“素材中心”')
        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        try:
            sc.logger.info('点击“滤镜”')
            sc.driver.find_element_by_android_uiautomator('text("滤镜")').click()
        except NoSuchElementException:
            sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 300)
            sc.driver.find_element_by_android_uiautomator('text("滤镜")').click()

        sc.logger.info('开始下载滤镜')
        try:
            el_template_down = sc.driver.find_element_by_id(
                'com.quvideo.xiaoying:id/template_filter_download')
            el_template_down.click()
        except NoSuchElementException:
            sc.logger.info('当前页面所有滤镜已下载完成')

        sc.logger.info('检查滤镜下载是否成功')
        try:
            WebDriverWait(
                sc.driver,
                30).until(lambda use: use.find_element_by_android_uiautomator(
                    'text("使用")'))
        except TimeoutError as t:
            sc.logger.info('滤镜下载超时', t)
            return False
        except Exception as e:
            sc.logger.info('滤镜下载失败', e)
            return False
        sc.logger.info('滤镜下载测试完成')

        self.template_use('滤镜')
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click()
        time.sleep(1)
        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()
        time.sleep(10)
        sc.capture_screen(fun_name, self.img_path)
        sc.driver.press_keycode(4)
        time.sleep(2)

        sc.logger.info('删除刚刚下载的滤镜')
        sc.capture_screen(fun_name, self.img_path)
        self.theme_manager('滤镜', 'com.quvideo.xiaoying:id/img_delete')

    def test_template_sticker(self):
        """素材中心-动画贴纸."""
        sc.logger.info('素材中心-动画贴纸')
        fun_name = 'test_template_sticker'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 4

        time.sleep(1)
        sc.logger.info('点击创作中心主按钮')
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/img_creation').click()
        sc.logger.info('点击“素材中心”')
        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300)
        sc.logger.info('点击“动画贴纸”')
        sc.driver.find_element_by_android_uiautomator('text("动画贴纸")').click()

        self.template_download(
            '动画贴纸', 'com.quvideo.xiaoying:id/template_pack_download_progress')
        self.template_use('动画贴纸')

        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click()
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click()
        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()
        time.sleep(1)
        sc.driver.press_keycode(4)
        time.sleep(1)

        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300)
        sc.driver.find_element_by_android_uiautomator('text("动画贴纸")').click()

        sc.logger.info('删除刚刚下载的动画贴纸')
        sc.capture_screen(fun_name, self.img_path)
        self.theme_manager('动画贴纸', 'com.quvideo.xiaoying:id/img_delete')

    # 目前code需要先下载至少一个转场,download控件无法获取到,需要再调试
    def test_template_transition(self):
        """素材中心-转场."""
        sc.logger.info('素材中心-转场')
        fun_name = 'test_template_transition'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 4

        time.sleep(1)
        sc.logger.info('点击创作中心主按钮')
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/img_creation').click()
        sc.logger.info('点击“素材中心”')
        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300)
        time.sleep(1)
        sc.logger.info('点击“转场”')
        sc.driver.find_element_by_android_uiautomator('text("转场")').click()

        time.sleep(1)
        try:
            btn_download = 'com.quvideo.xiaoying:id/imgbtn_download'
            sc.driver.find_element_by_id(btn_download)
            self.template_download('转场', btn_download)
        except NoSuchElementException:
            sc.logger.info('当前页面素材已经全部下载完毕了')

        time.sleep(1)
        self.template_use('转场')

        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click()
        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()
        time.sleep(1)
        sc.driver.press_keycode(4)

        time.sleep(1)
        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300)
        time.sleep(1)
        sc.driver.find_element_by_android_uiautomator('text("转场")').click()

        sc.logger.info('删除刚刚下载的转场')
        sc.capture_screen(fun_name, self.img_path)
        self.theme_manager(
            '转场', 'com.quvideo.xiaoying:id/template_caption_grid_btn_update')

    def test_template_font(self):
        """素材中心-字体."""
        sc.logger.info('素材中心-字体')
        fun_name = 'test_template_font'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 4

        time.sleep(1)
        sc.logger.info('点击创作中心主按钮')
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/img_creation').click()
        sc.logger.info('点击“素材中心”')
        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300)
        sc.logger.info('点击“字体”')
        sc.driver.find_element_by_android_uiautomator('text("字体")').click()

        sc.logger.info('开始下载字体')
        el_font_list = sc.driver.find_elements_by_id(
            'com.quvideo.xiaoying:id/btn_download')
        try:
            el_font_list[0].click()
        except Exception:
            sc.logger.info('当前页面所有字体已下载完成')
            el_font_use = sc.driver.find_element_by_android_uiautomator(
                'text("使用")')
            el_font_use.click()
            return True

        sc.logger.info('检查字体下载是否成功')
        try:
            WebDriverWait(
                sc.driver,
                30).until(lambda use: use.find_element_by_android_uiautomator(
                    'text("使用")'))
        except TimeoutError as t:
            sc.logger.info('字体下载超时', t)
            return False
        except Exception as e:
            sc.logger.info('字体下载失败', e)
            return False
        sc.logger.info('字体下载测试完成')

        time.sleep(1)
        self.template_use('字体')
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click()
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click()
        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()
        time.sleep(1)
        sc.driver.press_keycode(4)

        time.sleep(1)
        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300)
        sc.driver.find_element_by_android_uiautomator('text("字体")').click()

        sc.logger.info('删除刚刚下载的字体')
        sc.capture_screen(fun_name, self.img_path)
        self.theme_manager('字体', 'com.quvideo.xiaoying:id/img_delete')

    def test_template_giphy(self):
        """GIPHY-下载."""
        sc.logger.info('素材中心-GIPHY')
        fun_name = 'test_template_giphy'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 4

        time.sleep(1)
        sc.logger.info('点击创作中心主按钮')
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/img_creation').click()
        sc.logger.info('点击“素材中心”')
        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300)
        sc.logger.info('点击“动画贴纸”')
        sc.driver.find_element_by_android_uiautomator('text("动画贴纸")').click()
        sc.logger.info('点击“GIPHY”')
        sc.driver.find_element_by_android_uiautomator('text("GIPHY")').click()
        time.sleep(5)

        sc.logger.info('开始下载GIPHY')
        try:
            el_template_down = sc.driver.find_elements_by_android_uiautomator(
                'text("下载")')
            el_template_down.click()
        except Exception:
            sc.logger.info('当前页面所有GIPHY已下载完成')

        sc.logger.info('检查GIPHY下载是否成功')
        try:
            WebDriverWait(
                sc.driver,
                30).until(lambda giphy_use: giphy_use.
                          find_element_by_android_uiautomator('text("使用")'))
            el_template_use = sc.driver.find_elements_by_android_uiautomator(
                'text("使用")')
            el_template_use.click()
        except TimeoutError as t:
            sc.logger.info('GIPHY下载超时', t)
            return False
        except Exception as e:
            sc.logger.info('GIPHY下载失败', e)
            return False
        sc.logger.info('GIPHY下载测试完成')

        self.template_use('GIPHY')
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click()
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/xiaoying_com_btn_right').click()
        sc.logger.info('点击“存草稿”')
        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()
        time.sleep(1)
        sc.driver.press_keycode(4)

        time.sleep(1)
        sc.driver.find_element_by_android_uiautomator('text("素材中心")').click()
        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300)
        sc.driver.find_element_by_android_uiautomator('text("动画贴纸")').click()
        sc.driver.find_element_by_android_uiautomator('text("GIPHY")').click()
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/right_button').click()
        time.sleep(1)

        sc.logger.info('删除刚刚下载的giphy')
        sc.capture_screen(fun_name, self.img_path)
        self.theme_manager('GIPHY', 'com.quvideo.xiaoying:id/text_delete')
Esempio n. 14
0
class TestHome(object):
    """小影主页面的测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_home_minor(self):
        """首页-次要功能位检查."""
        sc.logger.info('首页-次要功能位检查')
        fun_name = 'test_home_minor'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sub_icon_btn = 'com.quvideo.xiaoying:id/sub_btn_icon'
        element_list = sc.driver.find_elements_by_id(sub_icon_btn)
        element_list.pop(0)

        for element_em in element_list:
            element_em.click()
            time.sleep(2)
            sc.driver.press_keycode(4)
            sc.capture_screen(fun_name, self.img_path)

        coord_x = element_list[-1].location.get('x')
        coord_y = element_list[-1].location.get('y')
        sc.swipe_by_ratio(coord_x, coord_y, 'left', 0.7, 500)

        sec_list = sc.driver.find_elements_by_id(sub_icon_btn)

        for sec_em in sec_list:
            sec_em.click()
            time.sleep(2)
            sc.driver.press_keycode(4)
            sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('首页-次要功能位检查完毕')

    def test_home_other(self):
        """首页-小影百宝箱及其他."""
        sc.logger.info('首页-推荐位-小影百宝箱及其他')
        fun_name = 'test_home_other'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 5

        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 500)

        vip_btn = 'com.quvideo.xiaoying:id/btn_vip'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(vip_btn)).click()

        back_img = 'com.quvideo.xiaoying:id/vip_home_close'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(back_img)).click()

        shuffle_btn = 'com.quvideo.xiaoying:id/btn_shuffle'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(shuffle_btn)).click()

        sc.driver.press_keycode(4)
        img_item = 'com.quvideo.xiaoying:id/creation_item_img'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(img_item)).click()
        sc.capture_screen(fun_name, self.img_path)

        time.sleep(3)
        sc.driver.press_keycode(4)
        sc.logger.info('首页-推荐位-小影百宝箱及其他检查完毕')

    def test_home_studio(self):
        """首页-我的工作室."""
        sc.logger.info('首页-我的工作室')
        fun_name = 'test_home_studio'
        start_x = self.width // 2
        start_bottom = self.height // 5

        sc.logger.info('下滑一点')
        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'down', 0.7, 700)

        sc.capture_screen(fun_name, self.img_path)
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'text("更多草稿")')).click()

        sc.logger.info('点击第一个草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        sc.driver.find_element_by_id(draft_img).click()

        time.sleep(1)
        try:
            sc.logger.info('点击左上角返回')
            left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
            WebDriverWait(
                sc.driver, 10,
                1).until(lambda el: el.find_element_by_id(left_btn)).click()
            sc.capture_screen(fun_name, self.img_path)
        except NoSuchElementException:
            sc.logger.info('此草稿视频为拍摄视频,返回的是拍摄页面')
            cancel_btn = 'com.quvideo.xiaoying:id/cam_btn_cancel'
            sc.driver.find_element_by_id(cancel_btn).click()
            sc.capture_screen(fun_name, self.img_path)

        sc.driver.press_keycode(4)

        sc.logger.info('点击“保存/上传”')
        publish_btn = 'com.quvideo.xiaoying:id/xiaoying_studio_publish_btn'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(publish_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击左上角返回')
        back_img = 'com.quvideo.xiaoying:id/img_back'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(back_img)).click()

        sc.logger.info('删除一个草稿')
        del_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_delete'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(del_img)).click()

        sc.driver.find_element_by_android_uiautomator('text("确认")').click()
        sc.driver.press_keycode(4)
        sc.logger.info('首页-我的工作室完成')
Esempio n. 15
0
class TestEditFX(object):
    """特效的基本操作测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_edit_fx(self):
        """剪辑-特效-添加."""
        sc.logger.info('剪辑-特效-添加')
        fun_name = 'test_edit_fx'

        startx = self.width // 2
        starty = self.height // 3

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“效果”')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("效果")')).click()

        sc.logger.info('开始点击特效')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("特效")')).click()

        fx_op_btn = 'com.quvideo.xiaoying:id/ve_music_op_btn'
        try:
            sc.logger.info('查找下载更多')
            fx_down_btn = 'com.quvideo.xiaoying:id/iv_download_more'
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(fx_down_btn))
        except TimeoutException:
            sc.logger.info('当前时间点已有fx,先删除')
            sc.driver.swipe(startx, starty, startx, starty, 500)
            try:
                icon_btn = 'com.quvideo.xiaoying:id/select_item'
                icon_list = sc.driver.find_elements_by_id(icon_btn)
                for icon_el in icon_list:
                    icon_el.click()
                    try:
                        WebDriverWait(sc.driver, 5, 1).until(
                            lambda x: x.find_element_by_id(fx_op_btn)).click()
                        break
                    except TimeoutException:
                        sc.driver.press_keycode(4)
                        time.sleep(1)
                        sc.driver.press_keycode(4)
                        time.sleep(1)
                        sc.driver.swipe(startx, starty, startx, starty, 500)
            except TimeoutException:
                WebDriverWait(sc.driver, 5, 1).until(
                    lambda x: x.find_element_by_id(fx_op_btn)).click()

        WebDriverWait(sc.driver, 5, 1).until(
            lambda x: x.find_element_by_id(fx_op_btn)).click()

        sc.logger.info('点击第二个特效')
        fx_cover = ('//android.support.v7.widget.RecyclerView/'
                    'android.widget.RelativeLayout[2]')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_xpath(fx_cover)).click()
        sc.capture_screen(fun_name, self.img_path)

        right_btn = 'com.quvideo.xiaoying:id/terminator_right'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda x: x.find_element_by_id(right_btn)).click()
        time.sleep(1)
        sc.driver.swipe(startx, starty, startx, starty, 1000)
        WebDriverWait(sc.driver, 5, 1).until(
            lambda x: x.find_element_by_id(right_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-特效-添加测试完成')

    def test_edit_fx_del(self):
        """剪辑-特效-删除."""
        sc.logger.info('剪辑-特效-删除')
        fun_name = 'test_edit_fx_del'
        startx = self.width // 2
        starty = self.height // 3

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“效果”')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("效果")')).click()

        sc.logger.info('开始点击特效')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("特效")')).click()

        fx_op_btn = 'com.quvideo.xiaoying:id/ve_music_op_btn'
        try:
            sc.logger.info('查找下载更多')
            fx_down_btn = 'com.quvideo.xiaoying:id/iv_download_more'
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(fx_down_btn))
        except TimeoutException:
            sc.logger.info('当前时间点已有fx,先删除')
            sc.driver.swipe(startx, starty, startx, starty, 500)
            try:
                icon_btn = 'com.quvideo.xiaoying:id/select_item'
                icon_list = sc.driver.find_elements_by_id(icon_btn)
                for icon_el in icon_list:
                    icon_el.click()
                    try:
                        WebDriverWait(sc.driver, 5, 1).until(
                            lambda x: x.find_element_by_id(fx_op_btn)).click()
                        break
                    except TimeoutException:
                        sc.driver.press_keycode(4)
                        time.sleep(1)
                        sc.driver.press_keycode(4)
                        time.sleep(1)
                        sc.driver.swipe(startx, starty, startx, starty, 500)
            except TimeoutException:
                WebDriverWait(sc.driver, 5, 1).until(
                    lambda x: x.find_element_by_id(fx_op_btn)).click()

        right_btn = 'com.quvideo.xiaoying:id/terminator_right'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda x: x.find_element_by_id(right_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-特效-删除测试完成')

    def test_edit_fx_cancel(self):
        """剪辑-特效-放弃."""
        sc.logger.info('剪辑-特效-放弃')
        fun_name = 'test_edit_fx_cancel'
        startx = self.width // 2
        starty = self.height // 3

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“效果”')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("效果")')).click()

        sc.logger.info('开始点击特效')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("特效")')).click()

        fx_op_btn = 'com.quvideo.xiaoying:id/ve_music_op_btn'
        try:
            sc.logger.info('查找下载更多')
            fx_down_btn = 'com.quvideo.xiaoying:id/iv_download_more'
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(fx_down_btn))
        except TimeoutException:
            sc.logger.info('当前时间点已有fx,先删除')
            sc.driver.swipe(startx, starty, startx, starty, 500)
            try:
                icon_btn = 'com.quvideo.xiaoying:id/select_item'
                icon_list = sc.driver.find_elements_by_id(icon_btn)
                for icon_el in icon_list:
                    icon_el.click()
                    try:
                        WebDriverWait(sc.driver, 5, 1).until(
                            lambda x: x.find_element_by_id(fx_op_btn)).click()
                        break
                    except TimeoutException:
                        sc.driver.press_keycode(4)
                        time.sleep(1)
                        sc.driver.press_keycode(4)
                        time.sleep(1)
                        sc.driver.swipe(startx, starty, startx, starty, 500)
            except TimeoutException:
                WebDriverWait(sc.driver, 5, 1).until(
                    lambda x: x.find_element_by_id(fx_op_btn)).click()

        WebDriverWait(sc.driver, 5, 1).until(
            lambda x: x.find_element_by_id(fx_op_btn)).click()

        sc.logger.info('点击第二个特效')
        fx_cover = ('//android.support.v7.widget.RecyclerView/'
                    'android.widget.RelativeLayout[2]')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_xpath(fx_cover)).click()
        sc.capture_screen(fun_name, self.img_path)

        right_btn = 'com.quvideo.xiaoying:id/terminator_right'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda x: x.find_element_by_id(right_btn)).click()
        time.sleep(1)
        sc.driver.swipe(startx, starty, startx, starty, 1000)

        sc.logger.info('放弃之前的操作')
        left_btn = 'com.quvideo.xiaoying:id/terminator_left'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda x: x.find_element_by_id(left_btn)).click()

        sc.logger.info('确认放弃')
        confirm_btn = 'com.quvideo.xiaoying:id/xiaoying_alert_dialog_positive'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda x: x.find_element_by_id(confirm_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-特效-放弃测试完成')
Esempio n. 16
0
class TestEditClip(object):
    """镜头编辑相关操作的测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_clip_edit_function(self):
        """剪辑-镜头编辑-功能遍历."""
        sc.logger.info('剪辑-镜头编辑-功能遍历')
        fun_name = 'test_clip_edit_function'
        video_flag = 0

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“镜头编辑”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("镜头编辑")')).click()

        confirm_btn = 'com.quvideo.xiaoying:id/terminator_right'

        sc.logger.info('剪辑-镜头编辑-图片时长')
        try:
            sc.logger.info('点击“图片时长”')
            WebDriverWait(sc.driver, 5, 1).until(
                lambda c_btn: c_btn.find_element_by_android_uiautomator(
                    'text("图片时长")')).click()
            sc.logger.info('点击“确认”')
            sc.driver.find_element_by_id(confirm_btn).click()
        except TimeoutException:
            video_flag = 1
            sc.logger.info('当前镜头是视频,不支持时长')

        sc.logger.info('剪辑-镜头编辑-修剪')
        try:
            sc.logger.info('点击“修剪”')
            WebDriverWait(sc.driver, 10, 1).until(
                lambda c_btn: c_btn.find_element_by_android_uiautomator(
                    'text("修剪")')).click()
            sc.logger.info('点击“确认”')
            WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(confirm_btn)).click()
        except NoSuchElementException:
            sc.logger.info('当前镜头是图片,不支持修剪')

        sc.logger.info('剪辑-镜头编辑-分割')
        if video_flag == 1:
            sc.logger.info('点击“分割”')
            WebDriverWait(sc.driver, 10, 1).until(
                lambda c_btn: c_btn.find_element_by_android_uiautomator(
                    'text("分割")')).click()
            sc.logger.info('点击“确认”')
            WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(confirm_btn)).click()

            try:
                WebDriverWait(
                    sc.driver, 5,
                    1).until(lambda el: el.find_element_by_id(confirm_btn))
                sc.logger.info('时长太短不能分割')
                sc.driver.press_keycode(4)
            except TimeoutException:
                sc.logger.info('分割成功')

        sc.logger.info('剪辑-镜头编辑-复制')
        el_copy = WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("复制")'))
        el_copy.click()

        sc.logger.info('工具栏左滑一些')
        time.sleep(2)
        coord_x = el_copy.location.get('x')
        coord_y = el_copy.location.get('y')
        sc.swipe_by_ratio(coord_x, coord_y, 'left', 0.5, 800)
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('剪辑-镜头编辑-变速')
        if video_flag == 1:
            sc.logger.info('点击“变速”')
            sc.driver.find_element_by_android_uiautomator('text("变速")').click()
            sc.logger.info('点击“确认”')
            WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(confirm_btn)).click()

        sc.logger.info('剪辑-镜头编辑-调色')
        sc.logger.info('点击“调色”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("调色")')).click()
        sc.logger.info('点击“确认”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(confirm_btn)).click()

        sc.logger.info('剪辑-镜头编辑-静音')
        sc.logger.info('点击“静音”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("静音")')).click()

        sc.logger.info('剪辑-镜头编辑-倒放镜头')
        sc.logger.info('点击“倒放镜头”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("倒放镜头")')).click()
        try:
            WebDriverWait(
                sc.driver,
                120).until(lambda reverse: reverse.
                           find_element_by_android_uiautomator('text("倒放镜头")'))
        except TimeoutError as t:
            sc.logger.error('倒放镜头超时', t)
            return False

        sc.logger.info('剪辑-镜头编辑-旋转')
        sc.logger.info('点击“旋转”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("旋转")')).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-镜头编辑-功能遍历完成')
Esempio n. 17
0
class TestPlanetExploreUI(object):
    """小影圈发现页UI的测试类,分步截图."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_planet_page(self):
        """小影圈发现页面初始状态测试."""
        sc.logger.info('小影圈发现页面初始状态检查开始')
        fun_name = 'test_planet_page'

        sc.logger.info('点击小影圈主按钮')
        p_btn = 'com.quvideo.xiaoying:id/img_find'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(p_btn)).click()

        time.sleep(1)
        sc.logger.info('开始查找小影圈发现tab')
        el_tab_list = sc.driver.find_elements_by_id('android:id/text1')
        for el_tab in el_tab_list:
            if el_tab.text == '发现':
                sc.logger.info('点击“发现”tab')
                el_tab.click()
                break
        sc.logger.info('小影圈发现页面初始状态截图开始')
        sc.capture_screen(fun_name, self.img_path)
        assert el_tab is not None

    def test_refresh(self):
        """测试下拉刷新."""
        sc.logger.info('发现页面下拉刷新测试开始')
        start_x = self.width // 2
        start_y = self.height // 8
        fun_name = 'test_refresh'

        time.sleep(1)
        result = sc.swipe_by_ratio(start_x, start_y, 'down', 0.6, 600)

        sc.logger.info('小影圈发现页面下拉刷新截图开始')
        sc.capture_screen(fun_name, self.img_path)
        assert result is True

    def test_swipe_vertical(self):
        """测试上下方向的滑动."""
        sc.logger.info('发现页面滑动测试开始')
        start_x = self.width // 2
        start_y = self.height // 8
        start_bottom = self.height - start_y
        fun_name = 'test_swipe_vertical'

        # 先上滑
        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_origin_home(self):
        """发现页tab的功能."""
        sc.logger.info('发现页面tab功能检查测试开始')
        start_x = self.width // 2
        start_bottom = self.height - self.height // 8
        fun_name = 'test_origin_home'

        # 先上滑一点
        result_up = sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.6, 500)
        time.sleep(1)
        sc.logger.info('小影圈发现页面轻微上滑截图开始')
        sc.capture_screen(fun_name, self.img_path)
        # 再按发现tab
        sc.logger.info('开始查找小影圈发现tab')
        el_tab_list = sc.driver.find_elements_by_id('android:id/text1')
        for el_tab in el_tab_list:
            if el_tab.text == '发现':
                sc.logger.info('点击“发现”tab')
                el_tab.click()
                break
        time.sleep(1)
        sc.logger.info('小影圈发现页面点击“发现”tab截图开始')
        sc.capture_screen(fun_name, self.img_path)
        assert result_up and el_tab is not None
Esempio n. 18
0
class TestEditSound(object):
    """配音的基本操作测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_edit_sound_add(self):
        """剪辑-配音-添加."""
        sc.logger.info('剪辑-配音-添加')
        fun_name = 'test_edit_sound_add'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“效果”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("效果")')).click()

        sc.logger.info('开始点击配音和音效')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("配音和音效")')).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('开始录音')
        record_btn = 'com.quvideo.xiaoying:id/ll_editor_audio_record_touch'

        try:
            sc.logger.info('点击录音按钮')
            WebDriverWait(sc.driver, 5, 1).until(
                lambda c_btn: c_btn.find_element_by_android_uiautomator(
                    'text("删除")')).click()
        except TimeoutException:
            el_record = WebDriverWait(
                sc.driver, 10,
                1).until(lambda c_btn: c_btn.find_element_by_id(record_btn))

        co_x = el_record.location.get('x') + el_record.size.get('width') / 2
        co_y = el_record.location.get('y') + el_record.size.get('height') / 2

        sc.driver.tap([(co_x, co_y)], 3000)
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击确认')
        right_btn = 'com.quvideo.xiaoying:id/terminator_right'
        WebDriverWait(
            sc.driver, 60,
            1).until(lambda el: el.find_element_by_id(right_btn)).click()
        """
        x = record.location.get('x')
        y = record.location.get('y')
        sc.driver.swipe(x, y, x, y, 5000)

        sc.logger.info('点击添加音频的按钮')
        au_add_btn = 'com.quvideo.xiaoying:id/xiaoying_ve_imgbtn_add_audio_dub'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(au_add_btn)).click()

        music_row = 'com.quvideo.xiaoying:id/musiclist_title'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(music_row)).click()

        music_add_btn = 'com.quvideo.xiaoying:id/btn_add_music'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(music_add_btn)).click()
        """

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-配音-添加测试完成')

    def test_edit_sound_del(self):
        """剪辑-配音-删除."""
        sc.logger.info('剪辑-配音-删除')
        fun_name = 'test_edit_sound_del'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“效果”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("效果")')).click()

        sc.logger.info('开始点击配音和音效')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("配音和音效")')).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('删除原有音效')
        try:
            sc.capture_screen(fun_name, self.img_path)
            WebDriverWait(sc.driver, 5, 1).until(
                lambda c_btn: c_btn.find_element_by_android_uiautomator(
                    'text("删除")')).click()
        except TimeoutException:
            sc.logger.info('该视频没有添加音效,跳过')

        sc.logger.info('点击确认')
        right_btn = 'com.quvideo.xiaoying:id/terminator_right'
        sc.capture_screen(fun_name, self.img_path)
        WebDriverWait(
            sc.driver, 60,
            1).until(lambda el: el.find_element_by_id(right_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-配音-删除测试完成')

    def test_edit_sound_cancel(self):
        """剪辑-配音-放弃."""
        sc.logger.info('剪辑-配音-放弃')
        fun_name = 'test_edit_sound_cancel'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“效果”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("效果")')).click()

        sc.logger.info('开始点击配音和音效')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("配音和音效")')).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('开始录音')
        record_btn = 'com.quvideo.xiaoying:id/ll_editor_audio_record_touch'
        try:
            sc.logger.info('点击录音按钮')
            WebDriverWait(sc.driver, 5, 1).until(
                lambda c_btn: c_btn.find_element_by_android_uiautomator(
                    'text("删除")')).click()
        except TimeoutException:
            el_record = WebDriverWait(
                sc.driver, 10,
                1).until(lambda c_btn: c_btn.find_element_by_id(record_btn))

        co_x = el_record.location.get('x') + el_record.size.get('width') / 2
        co_y = el_record.location.get('y') + el_record.size.get('height') / 2

        sc.driver.tap([(co_x, co_y)], 3000)
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击确认')
        left_btn = 'com.quvideo.xiaoying:id/terminator_left'
        WebDriverWait(
            sc.driver, 60,
            1).until(lambda el: el.find_element_by_id(left_btn)).click()

        pos_btn = 'com.quvideo.xiaoying:id/xiaoying_alert_dialog_positive'
        WebDriverWait(
            sc.driver, 60,
            1).until(lambda el: el.find_element_by_id(pos_btn)).click()

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-配音-放弃测试完成')
Esempio n. 19
0
class TestCreationShare(object):
    """创作页面内分享相关的测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_share_create(self):
        """分享-创建视频."""
        sc.logger.info('分享-创建视频')
        fun_name = 'test_share_create'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.driver.find_element_by_id('com.quvideo.xiaoying:id/icon2').click()
        el_cp = sc.driver.find_element_by_id('com.quvideo.xiaoying:id/btn_rec')

        # 长按拍摄
        sc.logger.info('长按拍摄5s')
        actions = TouchAction(sc.driver)
        actions.long_press(el_cp, None, None, 5000).release().perform()

        next_btn = 'com.quvideo.xiaoying:id/cam_btn_next'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(next_btn)).click()

        sc.driver.find_element_by_android_uiautomator('text("保存/上传")').click()
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('分享-创建视频完成')

    def test_share_edit(self):
        """分享-编辑视频标题/话题相关."""
        sc.logger.info('分享-编辑视频标题/话题相关')
        fun_name = 'test_share_edit'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 4

        sc.logger.info('添加标题')
        text_input = 'com.quvideo.xiaoying:id/share_video_title_text'
        el_title = WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(text_input))
        el_title.clear()
        el_title.send_keys('video title test')

        sc.logger.info('添加话题')
        topic_btn = 'com.quvideo.xiaoying:id/share_btn_add_topic'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(topic_btn)).click()

        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 500)

        name_tag = 'com.quvideo.xiaoying:id/txtview_tag_name'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(name_tag)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('隐私设置')
        privacy_btn = 'com.quvideo.xiaoying:id/share_btn_privacy'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(privacy_btn)).click()

        vis_btn = 'com.quvideo.xiaoying:id/private_setting_visible_btn'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(vis_btn)).click()

        down_btn = 'com.quvideo.xiaoying:id/private_setting_candnload_btn'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(down_btn)).click()

        pos_btn = 'com.quvideo.xiaoying:id/buttonDefaultPositive'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(pos_btn)).click()
        sc.logger.info('导出-导出页编辑测试完成')

    def test_share_upload(self):
        """导出-分享上传."""
        sc.logger.info('导出-分享上传')
        fun_name = 'test_share_upload'

        share_btn = 'com.quvideo.xiaoying:id/share_btn_share'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(share_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        clear_btn = 'com.quvideo.xiaoying:id/normal_layout'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(clear_btn)).click()

        try:
            neg_btn = 'com.quvideo.xiaoying:id/buttonDefaultNegative'
            WebDriverWait(
                sc.driver,
                5).until(lambda el: el.find_element_by_id(neg_btn)).click()
        except TimeoutException:
            sc.logger.info('硬件加速已经打开')

        try:
            qq_sns = 'com.quvideo.xiaoying:id/textview_id_sns_qqspace'
            WebDriverWait(
                sc.driver,
                120).until(lambda el: el.find_element_by_id(qq_sns)).click()
            time.sleep(5)
            sc.capture_screen(fun_name, self.img_path)
            sc.driver.press_keycode(4)
        except TimeoutError as t:
            sc.logger.error('导出视频超时', t)
            sc.driver.press_keycode(4)
            return False
        time.sleep(1)
        sc.driver.press_keycode(4)
        sc.logger.info('导出-分享上传完成')
Esempio n. 20
0
class TestCreationExport(object):
    """
    创作页面内导出视频相关的测试类.

    1.执行导出用例时,请确认当前app未进行过导出操作
    2.使用已购买会员账号登录
    """

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    @classmethod
    def hardware_acceleration(cls):
        """硬件加速设置."""
        try:
            sc.logger.info('尝试开启硬件加速')
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_android_uiautomator(
                    'text("视频处理硬件加速")')).click()
        except TimeoutException:
            sc.logger.info('未找到硬件加速选项,上滑半屏尝试')
            start_x = cls.width // 2
            start_y = cls.height // 8
            start_bottom = cls.height - start_y

            sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.4, 600)
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_android_uiautomator(
                    'text("视频处理硬件加速")')).click()
        time.sleep(1)
        sc.driver.press_keycode(4)

    @classmethod
    def restore_purchase(cls):
        """用来处理恢复购买."""
        try:
            sc.logger.info('尝试恢复购买')

            vip_btn = 'com.quvideo.xiaoying:id/privilege_to_be_vip'
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(vip_btn)).click()

            restore_btn = 'com.quvideo.xiaoying:id/vip_home_restore_button'
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(restore_btn)).click()

            close_btn = 'com.quvideo.xiaoying:id/vip_home_close'
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(close_btn)).click()
        except TimeoutException:
            sc.logger.info('无需设置恢复购买')

    def test_export_create(self):
        """导出-创建视频."""
        sc.logger.info('导出-创建视频')
        fun_name = 'test_export_create'
        start_x = self.width // 2
        start_bottom = self.height // 3

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“拍摄”')
        sc.driver.find_element_by_id('com.quvideo.xiaoying:id/icon2').click()

        sc.logger.info('点击录制按钮')
        el_cp = sc.driver.find_element_by_id('com.quvideo.xiaoying:id/btn_rec')

        # 长按拍摄
        sc.logger.info('长按拍摄5s')
        actions = TouchAction(sc.driver)
        actions.long_press(el_cp, None, None, 5000).release().perform()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击确认按钮')
        time.sleep(1)
        next_btn = 'com.quvideo.xiaoying:id/cam_btn_next'
        sc.driver.find_element_by_id(next_btn).click()
        sc.capture_screen(fun_name, self.img_path)

        time.sleep(1)
        sc.driver.swipe(start_x, start_bottom, start_x, start_bottom, 1000)

        sc.driver.find_element_by_android_uiautomator('text("保存/上传")').click()
        sc.logger.info('导出-创建视频完成')

    def test_export_first(self):
        """导出-保存到相册-480P-首次导出."""
        sc.logger.info('导出-保存到相册-480P-首次导出')
        fun_name = 'test_export_first'

        sc.logger.info('点击“保存到相册”')
        export_btn = 'com.quvideo.xiaoying:id/btn_export'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(export_btn)).click()
        # sc.driver.find_element_by_id('com.quvideo.xiaoying:id/btn_export').click()

        try:
            pos_btn = 'com.quvideo.xiaoying:id/buttonDefaultPositive'
            WebDriverWait(sc.driver, 5, 1).until(
                lambda el: el.find_element_by_id(pos_btn)).click()
            TestCreationExport.hardware_acceleration()

            WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(export_btn)).click()
        except TimeoutException:
            sc.logger.info('无需设置硬件加速')

        sc.logger.info('点击“480P 清晰”')
        limit_btn = 'com.quvideo.xiaoying:id/normal_layout'
        WebDriverWait(sc.driver, 5, 1).until(
            lambda el: el.find_element_by_id(limit_btn)).click()
        try:
            WebDriverWait(sc.driver, 20).until(
                lambda x: x.find_element_by_android_uiautomator('text("工作室")'))
            sc.capture_screen(fun_name, self.img_path)
        except TimeoutException:
            sc.driver.press_keycode(4)
        time.sleep(1)
        sc.driver.press_keycode(4)
        sc.logger.info('导出-保存到相册-480P-首次导出测试完成')

    def test_export_second(self):
        """导出-保存到相册-720P-二次导出."""
        sc.logger.info('导出-保存到相册-720P-二次导出')
        fun_name = 'test_export_second'

        sc.logger.info('点击“更多草稿”')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_android_uiautomator(
                'text("更多草稿")')).click()
        # sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()
        sc.logger.info('点击第一个草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('点击“保存/上传”')
        sc.driver.find_element_by_android_uiautomator('text("保存/上传")').click()

        sc.logger.info('点击“保存到相册”')
        export_btn = 'com.quvideo.xiaoying:id/btn_export'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(export_btn)).click()
        try:
            hd_title = 'com.quvideo.xiaoying:id/purchase_hd_title'
            sc.driver.find_element_by_id(hd_title).click()
            TestCreationExport.restore_purchase()

            WebDriverWait(sc.driver, 10, 1).until(
                lambda c_btn: c_btn.find_element_by_id(export_btn)).click()
            sc.driver.find_element_by_id(hd_title).click()
        except NoSuchElementException:
            sc.logger.info('当前设备不支持720P导出')
            sc.logger.info('返回创作中心主界面')
            for i in range(5):
                time.sleep(1)
                sc.driver.press_keycode(4)
            return True

        try:
            WebDriverWait(sc.driver, 60).until(
                lambda x: x.find_element_by_android_uiautomator('text("工作室")'))
            sc.capture_screen(fun_name, self.img_path)

            sc.driver.press_keycode(4)
            time.sleep(1)
            sc.driver.press_keycode(4)
        except NoSuchElementException:
            sc.driver.find_element_by_android_uiautomator('text("分享小影")')
            sc.capture_screen(fun_name, self.img_path)
            sc.driver.press_keycode(4)
        except TimeoutError as t:
            sc.logger.error('导出视频超时', t)
            return False
        sc.logger.info('导出-保存到相册-720P-二次导出测试完成')

    def test_export_third(self):
        """导出-保存到相册-1080P-三次导出."""
        sc.logger.info('导出-保存到相册-1080P')
        fun_name = 'test_export_third'

        sc.logger.info('点击“更多草稿”')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_android_uiautomator(
                'text("更多草稿")')).click()

        sc.logger.info('点击第一个草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(draft_img)).click()

        sc.driver.find_element_by_android_uiautomator('text("保存/上传")').click()

        export_btn = 'com.quvideo.xiaoying:id/btn_export'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(export_btn)).click()
        try:
            fhd_title = 'com.quvideo.xiaoying:id/purchase_hd_1080_title'
            sc.driver.find_element_by_id(fhd_title).click()
        except NoSuchElementException:
            sc.logger.info('当前设备不支持1080P导出')
            sc.logger.info('返回创作中心主界面')
            for i in range(5):
                time.sleep(1)
                sc.driver.press_keycode(4)
            return True
        try:
            WebDriverWait(sc.driver, 60).until(
                lambda x: x.find_element_by_android_uiautomator('text("工作室")'))
            sc.capture_screen(fun_name, self.img_path)

            left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
            sc.driver.find_element_by_id(left_btn).click()
        except TimeoutError as t:
            sc.logger.error('导出视频超时', t)
            return False
        sc.logger.info('导出-保存到相册-1080P测试完成')

    def test_export_gif(self):
        """导出-保存到相册-GIF."""
        sc.logger.info('导出-保存到相册-GIF')
        fun_name = 'test_export_gif'

        sc.logger.info('点击“更多草稿”')
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_android_uiautomator(
                'text("更多草稿")')).click()

        sc.logger.info('点击第一个草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('点击“保存/上传”')
        sc.driver.find_element_by_android_uiautomator('text("保存/上传")').click()

        sc.logger.info('点击“保存到相册”')
        export_btn = 'com.quvideo.xiaoying:id/btn_export'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(export_btn)).click()

        try:
            sc.logger.info('点击“GIF”')
            gif_title = 'com.quvideo.xiaoying:id/gif_layout'
            WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(gif_title)).click()
        except NoSuchElementException:
            sc.logger.info('当前版本不支持GIF导出')
            return True

        sc.logger.info('点击“导出”按钮')
        share_btn = 'com.quvideo.xiaoying:id/share_btn_share'
        WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(share_btn)).click()
        try:
            WebDriverWait(sc.driver, 20).until(
                lambda x: x.find_element_by_android_uiautomator('text("工作室")'))
            sc.capture_screen(fun_name, self.img_path)

            left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
            WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(left_btn)).click()
        except TimeoutError as t:
            sc.logger.error('导出GIF超时', t)
            sc.driver.press_keycode(4)
            sc.capture_screen(fun_name, self.img_path)

            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('返回创作中心主界面')
            for i in range(4):
                time.sleep(1)
                sc.driver.press_keycode(4)
            return False
        sc.logger.info('导出-保存到相册-GIF测试完成')
Esempio n. 21
0
class TestCameraNormal(object):
    """camera的基本操作测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]
    c_btn = 'com.quvideo.xiaoying:id/img_creation'

    def test_normal_filter_download(self):
        """拍摄-滤镜下载."""
        sc.logger.info('拍摄-滤镜下载')
        fun_name = 'test_normal_filter_download'

        effect_btn = 'com.quvideo.xiaoying:id/cam_btn_filter_effect'
        sc.logger.info('点击创作中心主按钮')
        sc.first_step(self.c_btn)

        sc.logger.info('点击“拍摄”')
        sc.driver.find_element_by_id('com.quvideo.xiaoying:id/icon2').click()
        sc.logger.info('点击滤镜图标')
        sc.driver.find_element_by_id(effect_btn).click()
        try:
            filter_down_btn = 'com.quvideo.xiaoying:id/icon_filter_download'
            el_filter_download = sc.driver.find_element_by_id(filter_down_btn)
            sc.logger.info('点击下载按钮')
            el_filter_download.click()
            try:
                WebDriverWait(sc.driver, 30).until(
                    lambda download_flt: download_flt.find_element_by_id(
                        'com.quvideo.xiaoying:id/item_fitler_child_cover'))
            except Exception as e:
                sc.logger.error('滤镜下载失败', e)
        except NoSuchElementException:
            filter_p_btn = 'com.quvideo.xiaoying:id/item_fitler_parent_cover'
            el_filter_list = sc.driver.find_elements_by_id(filter_p_btn)
            sc.logger.info('点击第三个滤镜主题')
            el_filter_list[2].click()

        time.sleep(1)
        filter_cover_btn = 'com.quvideo.xiaoying:id/item_fitler_child_cover'
        el_child_filter = sc.driver.find_element_by_id(filter_cover_btn)
        sc.logger.info('点击第一个滤镜')
        el_child_filter.click()
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('退出滤镜选项')
        sc.driver.press_keycode(4)
        time.sleep(1)
        sc.logger.info('返回创作中心主界面')
        sc.driver.press_keycode(4)
        sc.logger.info('拍摄-滤镜下载测试完成')

    def test_camera_normal_settings(self):
        """拍摄-设置相关."""
        sc.logger.info('拍摄-设置相关')
        fun_name = 'test_camera_normal_settings'

        sc.logger.info('点击“拍摄”')
        s_btn = 'com.quvideo.xiaoying:id/icon2'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(s_btn)).click()

        sc.logger.info('点击设置按钮')
        setting_btn = 'com.quvideo.xiaoying:id/cam_btn_setting'
        sc.driver.find_element_by_id(setting_btn).click()
        sc.find_by_classes('android.widget.ImageView', fun_name, self.img_path)
        sc.logger.info('退出设置选项')
        sc.driver.press_keycode(4)
        sc.logger.info('返回创作中心主界面')
        time.sleep(1)
        sc.driver.press_keycode(4)
        sc.logger.info('拍摄-设置相关测试完成')

    def test_camera_normal_shot(self):
        """拍摄-高清相机(全屏)."""
        sc.logger.info('拍摄-高清相机(全屏)')
        fun_name = 'test_camera_normal_shot'

        sc.logger.info('点击“拍摄”')
        s_btn = 'com.quvideo.xiaoying:id/icon2'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(s_btn)).click()

        sc.logger.info('点击摄像头切换按钮')
        switch_btn = 'com.quvideo.xiaoying:id/img_switch'
        sc.driver.find_element_by_id(switch_btn).click()
        time.sleep(2)
        el_cp = sc.driver.find_element_by_id('com.quvideo.xiaoying:id/btn_rec')

        # 长按拍摄
        sc.logger.info('长按拍摄5s')
        actions = TouchAction(sc.driver)
        actions.long_press(el_cp, None, None, 5000).release().perform()
        sc.capture_screen(fun_name, self.img_path)
        """
        sc.logger.info('点击撤销按钮两次')
        sc.driver.find_element_by_android_uiautomator('text("撤销")').click()
        time.sleep(2)
        sc.driver.find_element_by_android_uiautomator('text("撤销")').click()
        sc.capture_screen(fun_name, self.img_path)
        """
        sc.logger.info('点击确认按钮')
        time.sleep(1)
        next_btn = 'com.quvideo.xiaoying:id/cam_btn_next'
        sc.driver.find_element_by_id(next_btn).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击“存草稿”按钮')
        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()

        sc.logger.info('点击左上角返回按钮退回创作中心')
        left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
        sc.driver.find_element_by_id(left_btn).click()
        sc.logger.info('拍摄-高清相机拍摄完成')
Esempio n. 22
0
class TestEditMusic(object):
    """音乐相关操作测试测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_edit_music_add(self):
        """剪辑-多段配乐-添加."""
        sc.logger.info('剪辑-多段配乐-添加')
        fun_name = 'test_music_add'

        start_x = self.width // 2
        start_bottom = self.height // 4

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“效果”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("效果")')).click()

        sc.logger.info('开始点击多段配乐')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("多段配乐")')).click()

        m_add_btn = 'com.quvideo.xiaoying:id/tv_editor_audio_operation'
        sc.logger.info('点击添加音乐按钮')
        el_op = WebDriverWait(
            sc.driver, 5, 1).until(lambda el: el.find_element_by_id(m_add_btn))
        if el_op.text == '删除':
            sc.logger.info('当前视频已经有配乐,删除原有音乐')
            el_op.click()
        el_op.click()

        sc.logger.info('下载音乐')
        download_btn = 'com.quvideo.xiaoying:id/music_item_download'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(download_btn)).click()

        sc.logger.info('添加音乐')
        music_name = 'com.quvideo.xiaoying:id/music_item_name'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(music_name)).click()

        while True:
            try:
                state_btn = 'com.quvideo.xiaoying:id/music_item_play_state'
                WebDriverWait(sc.driver, 5, 1).until(
                    lambda el: el.find_element_by_id(state_btn)).click()
                sc.logger.info('点击播放状态')
                break
            except TimeoutException:
                WebDriverWait(sc.driver, 5,
                              1).until(lambda c_btn: c_btn.find_element_by_id(
                                  music_name)).click()

        sc.logger.info('使用音乐')
        use_btn = 'com.quvideo.xiaoying:id/music_item_use'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(use_btn)).click()

        time.sleep(1)
        sc.driver.swipe(start_x, start_bottom, start_x, start_bottom, 500)

        sc.logger.info('点击“完成”')
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(m_add_btn)).click()

        sc.logger.info('点击确认箭头按钮')
        right_btn = 'com.quvideo.xiaoying:id/terminator_right'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(right_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-多段配乐-添加测试完成')

    def test_edit_music_del(self):
        """剪辑-多段配乐-删除."""
        sc.logger.info('剪辑-多段配乐-删除')
        fun_name = 'test_camera_music_del'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“效果”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("效果")')).click()

        sc.logger.info('开始点击多段配乐')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("多段配乐")')).click()

        m_add_btn = 'com.quvideo.xiaoying:id/tv_editor_audio_operation'
        sc.logger.info('点击添加删除配乐按钮')
        el_op = WebDriverWait(
            sc.driver, 5, 1).until(lambda el: el.find_element_by_id(m_add_btn))
        if el_op.text == '删除':
            sc.logger.info('当前视频已经有配乐,删除原有音乐')
            el_op.click()
        else:
            sc.logger.info('当前视频没有配乐,无需删除')

        sc.logger.info('点击确认箭头按钮')
        right_btn = 'com.quvideo.xiaoying:id/terminator_right'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(right_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-多段配乐-删除测试完成')

    def test_edit_music_cancel(self):
        """剪辑-多段配乐-放弃."""
        sc.logger.info('剪辑-多段配乐-放弃')
        fun_name = 'test_camera_music_cancel'

        start_x = self.width // 2
        start_bottom = self.height // 4

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“效果”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("效果")')).click()

        sc.logger.info('开始点击多段配乐')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("多段配乐")')).click()

        m_add_btn = 'com.quvideo.xiaoying:id/tv_editor_audio_operation'
        sc.logger.info('点击添加音乐按钮')
        el_op = WebDriverWait(
            sc.driver, 5, 1).until(lambda el: el.find_element_by_id(m_add_btn))
        if el_op.text == '删除':
            sc.logger.info('当前视频已经有配乐,删除原有音乐')
            el_op.click()
        el_op.click()

        sc.logger.info('下载音乐')
        download_btn = 'com.quvideo.xiaoying:id/music_item_download'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(download_btn)).click()

        sc.logger.info('添加音乐')
        music_name = 'com.quvideo.xiaoying:id/music_item_name'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(music_name)).click()

        while True:
            try:
                state_btn = 'com.quvideo.xiaoying:id/music_item_play_state'
                WebDriverWait(sc.driver, 5, 1).until(
                    lambda el: el.find_element_by_id(state_btn)).click()
                sc.logger.info('点击播放状态')
                break
            except TimeoutException:
                WebDriverWait(sc.driver, 5,
                              1).until(lambda c_btn: c_btn.find_element_by_id(
                                  music_name)).click()

        sc.logger.info('使用音乐')
        use_btn = 'com.quvideo.xiaoying:id/music_item_use'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(use_btn)).click()

        time.sleep(1)
        sc.driver.swipe(start_x, start_bottom, start_x, start_bottom, 500)

        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(m_add_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击放弃操作按钮')
        left_btn = 'com.quvideo.xiaoying:id/terminator_left'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(left_btn)).click()
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(left_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('确认放弃操作')
        pos_btn = 'com.quvideo.xiaoying:id/xiaoying_alert_dialog_positive'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(pos_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-多段配乐-放弃测试完成')
Esempio n. 23
0
class TestGallery(object):
    """Gallery的测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_gallery_video(self):
        """相册-视频."""
        sc.logger.info('相册-视频')
        fun_name = 'test_gallery_video'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 4
        start_y = self.height // 3

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“剪辑”')
        sc.driver.find_element_by_id('com.quvideo.xiaoying:id/icon1').click()
        time.sleep(1)
        try:
            sc.driver.find_element_by_android_uiautomator('text("跳过")').click()

            first_icon = 'com.quvideo.xiaoying:id/icon1'
            WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(first_icon)).click()
        except NoSuchElementException:
            sc.logger.info('已跳过订阅页面')
        sc.logger.info('点击“其它相册”')
        sc.driver.find_element_by_android_uiautomator('text("其他相册")').click()
        sc.capture_screen(fun_name, self.img_path)
        sc.driver.find_element_by_android_uiautomator('text("全部")').click()
        time.sleep(1)

        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 500)
        mask_img = 'com.quvideo.xiaoying:id/img_click_mask'
        WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(mask_img)).click()
        sc.capture_screen(fun_name, self.img_path)

        rotate_btn = 'com.quvideo.xiaoying:id/imgbtn_ratate'
        WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(rotate_btn)).click()

        try:
            crop_btn = 'com.quvideo.xiaoying:id/imgbtn_crop'
            sc.driver.find_element_by_id(crop_btn).click()
        except NoSuchElementException:
            sc.logger.info('视频尺寸1:1,无此选项')

        trip_btn = 'com.quvideo.xiaoying:id/btn_start_trim'
        sc.driver.find_element_by_id(trip_btn).click()

        import_btn = 'com.quvideo.xiaoying:id/imgbtn_import'
        WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(import_btn)).click()
        sc.capture_screen(fun_name, self.img_path)
        try:
            n_btn = 'com.quvideo.xiaoying:id/xiaoying_com_storyboard_next_btn'
            WebDriverWait(sc.driver, 60).until(
                lambda x: x.find_element_by_id(n_btn)).click()
        except TimeoutError as t:
            sc.logger.error('导入视频超时', t)
            return False
        except Exception as e:
            sc.logger.error('导入视频出错', e)
            return False
        sc.capture_screen(fun_name, self.img_path)

        time.sleep(1)
        sc.driver.swipe(start_x, start_y, start_x, start_y, 1000)

        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()
        left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
        WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(left_btn)).click()
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('相册-视频相关操作测试完成')

    def test_gallery_img(self):
        """相册-图片."""
        sc.logger.info('相册-图片')
        fun_name = 'test_gallery_img'
        start_x = self.width // 2
        start_y = self.height // 3

        first_icon = 'com.quvideo.xiaoying:id/icon1'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(first_icon)).click()

        # sc.driver.find_element_by_id('com.quvideo.xiaoying:id/icon1').click()
        sc.driver.find_element_by_android_uiautomator('text("视频")').click()
        sc.driver.find_element_by_android_uiautomator('text("图片")').click()
        sc.driver.find_element_by_android_uiautomator('text("其他相册")').click()
        sc.capture_screen(fun_name, self.img_path)

        sc.driver.find_element_by_android_uiautomator('text("全部")').click()
        mask_img = 'com.quvideo.xiaoying:id/img_click_mask'
        element_list = sc.driver.find_elements_by_id(mask_img)

        if len(element_list) >= 2:
            element_list = element_list[:2]

        for element_em in element_list:
            element_em.click()
            time.sleep(1)
            sc.capture_screen(fun_name, self.img_path)

        sc.driver.find_element_by_android_uiautomator('text("下一步")').click()
        sc.capture_screen(fun_name, self.img_path)

        time.sleep(1)
        sc.driver.swipe(start_x, start_y, start_x, start_y, 1000)

        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()

        left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(left_btn)).click()
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('相册-图片相关操作测试完成')

    def test_gallery_storyboard(self):
        """相册-storyboard."""
        sc.logger.info('相册-storyboard')
        fun_name = 'test_gallery_storyboard'

        first_icon = 'com.quvideo.xiaoying:id/icon1'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(first_icon)).click()

        mask_img = 'com.quvideo.xiaoying:id/img_click_mask'
        el_video_list = sc.driver.find_elements_by_id(mask_img)

        for i in range(2):
            import_btn = 'com.quvideo.xiaoying:id/imgbtn_import'
            el_video_list[i].click()
            sc.driver.find_element_by_id(import_btn).click()
            try:
                WebDriverWait(sc.driver, 60).until(
                    lambda el: el.find_element_by_android_uiautomator(
                        'text("下一步")'))
            except TimeoutError as t:
                sc.logger.error('导入视频超时', t)
                return False
            except Exception as e:
                sc.logger.error('导入视频出错', e)
                return False
        sc.driver.find_element_by_android_uiautomator('text("视频")').click()
        sc.driver.find_element_by_android_uiautomator('text("图片")').click()

        img_icon = 'com.quvideo.xiaoying:id/img_icon'
        element_list = sc.driver.find_elements_by_id(img_icon)

        if len(element_list) >= 2:
            element_list = element_list[:2]

        for element_em in element_list:
            element_em.click()
            time.sleep(1)
            sc.capture_screen(fun_name, self.img_path)

        expand_btn = 'com.quvideo.xiaoying:id/btn_expand'
        sc.driver.find_element_by_id(expand_btn).click()

        del_img = 'com.quvideo.xiaoying:id/img_delete'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(del_img)).click()
        sc.capture_screen(fun_name, self.img_path)

        left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
        sc.driver.find_element_by_id(left_btn).click()

        sc.driver.find_element_by_android_uiautomator('text("保存")').click()
        sc.capture_screen(fun_name, self.img_path)

        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(left_btn)).click()
        sc.logger.info('相册-storyboard相关操作测试完成')

    def test_gallery_giveup(self):
        """相册-放弃操作."""
        sc.logger.info('相册-放弃操作')
        fun_name = 'test_gallery_giveup'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 4

        first_icon = 'com.quvideo.xiaoying:id/icon1'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(first_icon)).click()

        mask_img = 'com.quvideo.xiaoying:id/img_click_mask'
        WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(mask_img)).click()
        sc.capture_screen(fun_name, self.img_path)

        left_btn = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
        sc.driver.find_element_by_id(left_btn).click()

        sc.capture_screen(fun_name, self.img_path)
        sc.driver.find_element_by_android_uiautomator('text("视频")').click()
        sc.driver.find_element_by_android_uiautomator('text("图片")').click()

        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 500)
        img_icon = 'com.quvideo.xiaoying:id/img_icon'
        element_list = sc.driver.find_elements_by_id(img_icon)

        if len(element_list) >= 2:
            element_list = element_list[:2]

        for element_em in element_list:
            element_em.click()
            time.sleep(1)
            sc.capture_screen(fun_name, self.img_path)

        sc.driver.find_element_by_id(left_btn).click()

        sc.driver.find_element_by_android_uiautomator('text("丢弃")').click()
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('相册-放弃操作相关操作测试完成')
Esempio n. 24
0
class TestPreviewTheme(object):
    """预览页面的theme测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_theme_ui(self):
        """预览页-切换到主题页面."""
        sc.logger.info('预览页-切换到主题页面')
        start_x = self.width // 2
        start_bottom = self.height // 3
        fun_name = 'test_theme_ui'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“剪辑”')
        sc.driver.find_element_by_id('com.quvideo.xiaoying:id/icon1').click()

        click_mask = 'com.quvideo.xiaoying:id/img_click_mask'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(click_mask)).click()

        sc.logger.info('点击“添加”')
        import_btn = 'com.quvideo.xiaoying:id/imgbtn_import'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(import_btn)).click()

        try:
            WebDriverWait(sc.driver, 60).until(
                lambda el: el.find_element_by_android_uiautomator(
                    'text("下一步")')).click()
        except TimeoutError as t:
            sc.logger.error('导入视频超时', t)
            return False
        except Exception as e:
            sc.logger.error('导入视频出错', e)
            return False

        time.sleep(1)
        sc.driver.swipe(start_x, start_bottom, start_x, start_bottom, 1000)

        sc.logger.info('点击“主题”按钮')
        WebDriverWait(sc.driver, 60).until(
            lambda el: el.find_element_by_android_uiautomator(
                'text("主题")')).click()
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('预览页-切换到主题页面')

    def test_theme_download(self):
        """预览页-主题下载."""
        sc.logger.info('预览页-主题下载')
        fun_name = 'test_theme_download'
        start_x = self.width // 4
        start_bottom = self.height - self.height // 10
        start_y = self.height // 3

        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'right', 0.5, 500)

        sc.logger.info('点击“下载更多”')
        thumb_bg = 'com.quvideo.xiaoying:id/imgview_get_more_thumbnail_bg'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(thumb_bg)).click()

        try:
            sc.logger.info('点击“使用”按钮')
            u_btn = 'com.quvideo.xiaoying:id/template_caption_grid_btn_update'
            WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(u_btn)).click()
            time.sleep(1)
            sc.driver.swipe(start_x, start_y, start_x, start_y, 1000)
        except TimeoutException:
            sc.logger.info('点击下载按钮')
            sc.capture_screen(fun_name, self.img_path)
            down_btn = 'com.quvideo.xiaoying:id/imgbtn_download'
            WebDriverWait(sc.driver, 10, 1).until(
                lambda el: el.find_element_by_id(down_btn)).click()

            try:
                WebDriverWait(sc.driver, 30).until(
                    lambda el: el.find_element_by_android_uiautomator(
                        'text("使用")')).click()
                time.sleep(1)
                sc.driver.swipe(start_x, start_y, start_x, start_y, 1000)
            except TimeoutError as t:
                sc.logger.error('素材下载超时', t)
                sc.logger.info('返回创作中心主界面')
                for i in range(4):
                    time.sleep(1)
                    sc.driver.press_keycode(4)
                return False
            except Exception as e:
                sc.logger.info('返回创作中心主界面')
                for i in range(4):
                    time.sleep(1)
                    sc.driver.press_keycode(4)
                sc.logger.error('素材下载失败', e)
                return False

        sc.logger.info('返回创作中心主界面')
        for i in range(3):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('预览页-主题测试完成')
Esempio n. 25
0
class TestPreviewMusic(object):
    """预览页面的music测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_music_create(self):
        """导出-创建视频."""
        sc.logger.info('分享-创建视频')
        fun_name = 'test_music_create'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“拍摄”')
        sc.driver.find_element_by_id('com.quvideo.xiaoying:id/icon2').click()

        el_cp = sc.driver.find_element_by_id('com.quvideo.xiaoying:id/btn_rec')

        # 长按拍摄
        sc.logger.info('长按拍摄5s')
        actions = TouchAction(sc.driver)
        actions.long_press(el_cp, None, None, 5000).release().perform()
        sc.capture_screen(fun_name, self.img_path)

        next_btn = 'com.quvideo.xiaoying:id/cam_btn_next'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_id(next_btn)).click()

        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'text("存草稿")')).click()

        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('分享-创建视频完成')

    def test_music_add(self):
        """预览页-配乐."""
        sc.logger.info('预览页-配乐')
        start_x = self.width // 2
        start_y = self.height // 3
        fun_name = 'test_music_add'

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        sc.driver.find_element_by_id(draft_img).click()

        sc.logger.info('点击“配乐”')
        sc.driver.find_element_by_android_uiautomator('text("配乐")').click()
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('点击添加配乐')
        try:
            del_icon = 'com.quvideo.xiaoying:id/imgbtn_del_music'
            WebDriverWait(
                sc.driver, 10,
                1).until(lambda el: el.find_element_by_id(del_icon)).click()
            sc.capture_screen(fun_name, self.img_path)
        except TimeoutException:
            bgm_row = 'com.quvideo.xiaoying:id/txtview_bgm_name'
            sc.driver.find_element_by_id(bgm_row).click()

        sc.logger.info('下载音乐')
        music_item_download = 'com.quvideo.xiaoying:id/music_item_download'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(music_item_download)).click()

        sc.logger.info('添加音乐')
        time.sleep(5)
        music_item_name = 'com.quvideo.xiaoying:id/music_item_name'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(music_item_name)).click()

        while True:
            try:
                state_btn = 'com.quvideo.xiaoying:id/music_item_play_state'
                WebDriverWait(sc.driver, 10, 1).until(
                    lambda el: el.find_element_by_id(state_btn)).click()
                sc.logger.info('点击播放状态')
                break
            except TimeoutException:
                WebDriverWait(sc.driver, 10, 1).until(
                    lambda el: el.find_element_by_id(music_item_name)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('使用音乐')
        use_btn = 'com.quvideo.xiaoying:id/music_item_use'
        sc.driver.find_element_by_id(use_btn).click()

        time.sleep(1)
        sc.driver.swipe(start_x, start_y, start_x, start_y, 1000)
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击声音按钮')
        video_icon = 'com.quvideo.xiaoying:id/imgview_icon_video'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(video_icon)).click()

        sc.logger.info('点击音乐按钮')
        bgm_icon = 'com.quvideo.xiaoying:id/imgview_icon_bgm'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(bgm_icon)).click()

        sc.logger.info('点击删除音乐按钮')
        del_icon = 'com.quvideo.xiaoying:id/imgbtn_del_music'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(del_icon)).click()

        time.sleep(1)
        sc.driver.swipe(start_x, start_y, start_x, start_y, 1000)

        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('预览页-配乐测试完成')

    def test_preview_recommend(self):
        """音乐库-推荐音乐下载."""
        sc.logger.info('音乐库-推荐音乐下载')
        fun_name = 'test_preview_recommend'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 4

        sc.logger.info('点击添加配乐')
        b_btn = 'com.quvideo.xiaoying:id/txtview_bgm_name'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_id(b_btn)).click()

        # 推荐音乐下载
        while True:
            try:
                sc.driver.find_element_by_android_uiautomator(
                    'text("没有更多了…")').click()
                break
            except NoSuchElementException:
                sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 600)

        sc.logger.info('下载音乐')
        music_item_download = 'com.quvideo.xiaoying:id/music_item_download'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(music_item_download)).click()

        time.sleep(5)
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('音乐库-推荐音乐下载测试完成')

    def test_preview_other(self):
        """音乐库-其他分类音乐下载."""
        sc.logger.info('音乐库-其他分类音乐下载')
        fun_name = 'test_preview_other'
        start_x = self.width - self.width // 5
        start_bottom = self.height // 2

        # 切换到流行分类
        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.7, 500)
        sc.logger.info('点击第一个可下载按钮')
        sc.logger.info('下载音乐')
        music_item_download = 'com.quvideo.xiaoying:id/music_item_download'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(music_item_download)).click()

        time.sleep(5)
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('音乐库-其他分类音乐下载测试完成')

    def test_preview_use(self):
        """音乐库-使用已下载音乐."""
        sc.logger.info('音乐库-使用已下载音乐')
        start_x = self.width // 2
        start_y = self.height // 3
        fun_name = 'test_preview_use'

        sc.logger.info('点击“已下载”tab')
        sc.driver.find_element_by_android_uiautomator('text("已下载")').click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('添加音乐')
        music_item_name = 'com.quvideo.xiaoying:id/music_item_name'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(music_item_name)).click()

        state_btn = 'com.quvideo.xiaoying:id/music_item_play_state'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(state_btn)).click()

        sc.logger.info('点击“添加”按钮')
        sc.driver.find_element_by_android_uiautomator('text("添加")').click()

        time.sleep(1)
        sc.driver.swipe(start_x, start_y, start_x, start_y, 1000)
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('音乐库-使用已下载音乐测试完成')

    def test_preview_delete(self):
        """音乐库-删除已下载音乐."""
        sc.logger.info('音乐库-删除已下载音乐')
        fun_name = 'test_preview_delete'

        b_btn = 'com.quvideo.xiaoying:id/txtview_bgm_name'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_id(b_btn)).click()

        sc.logger.info('点击删除按钮')
        rubbish_icon = 'com.quvideo.xiaoying:id/music_rubbish_icon'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(rubbish_icon)).click()

        sc.logger.info('依次选择已下载音乐')
        check_item = 'com.quvideo.xiaoying:id/music_item_check_box'
        sc.find_by_ids(check_item, fun_name, self.img_path)

        sc.logger.info('再次点击删除按钮')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(rubbish_icon)).click()
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('音乐库-删除已下载音乐测试完成')

    def test_preview_local(self):
        """音乐库-使用本地音乐."""
        sc.logger.info('音乐库-使用本地音乐')
        start_x = self.width // 2
        start_y = self.height // 3
        fun_name = 'test_preview_local'

        sc.driver.find_element_by_android_uiautomator('text("本地")').click()
        sc.capture_screen(fun_name, self.img_path)

        music_item_name = 'com.quvideo.xiaoying:id/music_item_name'
        m_list = sc.driver.find_elements_by_id(music_item_name)
        try:
            m_list[0].click()
        except Exception:
            sc.logger.info('本地音乐不存在!返回创作中心主界面。')
            for i in range(4):
                time.sleep(1)
                sc.driver.press_keycode(4)
            return True

        state_btn = 'com.quvideo.xiaoying:id/music_item_play_state'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(state_btn)).click()

        sc.logger.info('点击“添加”按钮')
        sc.driver.find_element_by_android_uiautomator('text("添加")').click()

        time.sleep(1)
        sc.driver.swipe(start_x, start_y, start_x, start_y, 1000)

        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()

        left_icon = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(left_icon)).click()
        sc.logger.info('音乐库-使用本地音乐测试完成')

    def test_preview_time(self):
        """预览页-时长."""
        sc.logger.info('预览页-时长')
        fun_name = 'test_preview_time'
        start_x = self.width // 2
        start_y = self.height // 3

        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击“相册MV')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'text("相册MV")')).click()

        sc.logger.info('添加图片')
        click_mask = 'com.quvideo.xiaoying:id/img_click_mask'
        element_list = sc.driver.find_elements_by_id(click_mask)

        if len(element_list) >= 2:
            element_list = element_list[:2]

        for element_em in element_list:
            element_em.click()
            time.sleep(1)
            sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击“下一步”')
        sc.driver.find_element_by_android_uiautomator('text("下一步")').click()

        time.sleep(1)
        sc.driver.swipe(start_x, start_y, start_x, start_y, 1000)

        sc.logger.info('点击“时长”')
        sc.driver.find_element_by_android_uiautomator('text("时长")').click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击“存草稿”')
        sc.driver.find_element_by_android_uiautomator('text("存草稿")').click()

        sc.logger.info('点击左上角返回创作中心主界面')
        left_icon = 'com.quvideo.xiaoying:id/xiaoying_com_btn_left'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(left_icon)).click()
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('预览页-时长测试完成')
Esempio n. 26
0
class TestCircleSearch(object):
    """小影圈搜索页的测试类,分步截图."""

    width, heigh = sc.get_size()
    img_path = sc.path_lists[0]

    def test_search_page(self):
        """小影圈搜索页面输入状态测试."""
        sc.logger.info('小影圈搜索页面输入状态测试开始')
        fun_name = 'test_search_page'
        start_x = self.width // 2
        start_bottom = self.heigh - self.heigh // 8

        sc.logger.info('点击小影圈主按钮')
        p_btn = 'com.quvideo.xiaoying:id/img_find'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(p_btn)).click()

        sc.logger.info('开始查找小影圈搜索按钮')
        search_btn = 'com.quvideo.xiaoying:id/btn_search'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(search_btn)).click()

        sc.logger.info('开始向小影圈搜索框输入字符a')
        search_frame = 'com.quvideo.xiaoying:id/edittext_search'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(search_frame)).click()
        sc.driver.press_keycode(29)
        sc.logger.info('小影圈搜索框输入文字"a"截图开始')
        sc.capture_screen(fun_name, self.img_path)
        # sc.driver.hide_keyboard()

        # sc.driver.press_keycode(4)
        sc.logger.info('开始查找输入框补全内容')
        keyword_frame = 'com.quvideo.xiaoying:id/textview_keyword'
        sc.logger.info('点击第一条自动联想内容')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(keyword_frame)).click()

        time.sleep(2)
        sc.logger.info('开始查找搜索结果中的用户')
        res_user_id = 'com.quvideo.xiaoying:id/img_simple_user_avatar_click'
        WebDriverWait(sc.driver, 10,
                      1).until(lambda el: el.find_element_by_id(res_user_id))

        sc.logger.info('开始查找搜索结果中的视频')
        res_video_id = 'com.quvideo.xiaoying:id/xiaoying_com_img_video_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(res_video_id)).click()

        sc.logger.info('小影圈搜索结果截图')
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('小影圈搜索结果下滑截图')
        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 500)
        sc.capture_screen(fun_name, self.img_path)

    def test_search_result(self):
        """小影圈搜索结果测试,为了简化流程,请与上一条连起来用."""
        sc.logger.info('小影圈搜索结果测试开始')
        fun_name = 'test_search_result'
        start_x = self.width - self.width // 4
        start_bottom = self.heigh - self.heigh // 8

        # 左滑一次
        sc.logger.info('开始左滑至“视频”页面')
        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.7, 500)
        time.sleep(1)
        sc.logger.info('开始查找搜索结果视频页面中的视频')
        res_video_id = 'com.quvideo.xiaoying:id/xiaoying_com_img_video_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(res_video_id)).click()
        sc.logger.info('小影圈搜索结果视频页面截图')
        sc.capture_screen(fun_name, self.img_path)

        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.4, 500)
        time.sleep(1)
        sc.logger.info('小影圈搜索结果视频页面下滑截图')
        sc.capture_screen(fun_name, self.img_path)

        # 再左滑一次
        sc.logger.info('开始滑动至“用户”页面')
        sc.swipe_by_ratio(start_x, start_bottom, 'left', 0.7, 500)

        sc.logger.info('开始查找搜索结果用户页面中的第一个用户')
        res_user_id = 'com.quvideo.xiaoying:id/fans_name'
        WebDriverWait(sc.driver, 10,
                      1).until(lambda el: el.find_element_by_id(res_user_id))
        sc.logger.info('小影圈搜索结果用户页面截图')
        sc.capture_screen(fun_name, self.img_path)

        time.sleep(1)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.3, 500)
        sc.logger.info('小影圈搜索结果用户界面下滑截图')
        sc.capture_screen(fun_name, self.img_path)

    def test_search_follow(self):
        """小影圈搜索结果中的关注测试,为了简化流程,请与上一条连起来用."""
        sc.logger.info('小影圈搜索结果,关注测试开始')
        fun_name = 'test_search_follow'
        start_x = self.width // 4
        start_bottom = self.heigh // 2

        # 查找用户关注按钮
        time.sleep(1)
        sc.logger.info('开始查找搜索结果用户页面中的第一个用户关注按钮')
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.3, 500)

        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'text("关注")')).click()

        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'text("已关注")')).click()

        sc.logger.info('小影圈搜索结果,用户页面关注情况截图')
        sc.capture_screen(fun_name, self.img_path)

        # 取消关注
        sc.logger.info('开始取消关注')

        pos_btn = 'com.quvideo.xiaoying:id/buttonDefaultPositive'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(pos_btn)).click()

        sc.logger.info('小影圈搜索结果,用户页面取消关注后情况截图')
        sc.capture_screen(fun_name, self.img_path)

    def test_search_history(self):
        """小影圈搜索页面历史记录搜索测试,为了简化流程,请与上一条连起来用."""
        sc.logger.info('小影圈搜索页面历史记录搜索测试开始')
        fun_name = 'test_search_history'

        time.sleep(1)
        sc.logger.info('开始查找搜索框')
        search_frame = 'com.quvideo.xiaoying:id/edittext_search'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(search_frame)).click()

        sc.logger.info('开始查找清除输入按钮')
        clear_btn = 'com.quvideo.xiaoying:id/btn_clear_edit'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(clear_btn)).click()

        time.sleep(1)
        sc.logger.info('小影圈搜索框历史记录截图开始')
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('开始查找第一条历史记录')
        res_his_id = 'com.quvideo.xiaoying:id/text_history_list_item'
        sc.logger.info('点击第一条历史记录')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(res_his_id)).click()

        sc.logger.info('开始查找历史记录搜索结果中的视频')
        try:
            video_id = 'com.quvideo.xiaoying:id/xiaoying_com_img_video_thumb'
            el_res_video = sc.driver.find_element_by_id(video_id)
        except NoSuchElementException:
            video_desc = 'com.quvideo.xiaoying:id/xiaoying_com_text_video_desc'
            el_res_video = sc.driver.find_elements_by_id(video_desc)

        sc.logger.info('小影圈历史记录搜索结果截图')
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('测试完成返回主页')
        sc.driver.press_keycode(4)
        assert el_res_video is not None
Esempio n. 27
0
class TestUserFollow(object):
    """测试用户空间关注页的测试类,分步截图."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_user_follows(self):
        """测试用户空间关注页面的初始状态."""
        sc.logger.info('用户空间关注页面初始状态检查测试开始')
        fun_name = 'test_user_follows'

        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_user_follow_state(self):
        """关注/取消关注测试."""
        sc.logger.info('用户空间关注页面关注状态测试开始')
        fun_name = 'test_fans_follow'

        time.sleep(1)
        btn_follow = 'com.quvideo.xiaoying:id/btn_follow_state'
        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_user_follow_home(self):
        """点击关注用户头像进入用户空间测试."""
        sc.logger.info('粉丝空间空间测试')
        fun_name = 'test_user_follow_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)

    def test_user_follow_list(self):
        """用户中心关注页面上下滑动测试."""
        sc.logger.info('用户中心关注页面上下滑动测试开始')
        fun_name = 'test_user_follow_list'
        start_x = self.width // 2
        start_y = self.height // 4
        start_bottom = self.height - start_y

        time.sleep(1)
        # 先上滑
        sc.logger.info('上滑截图开始')
        result_up = sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.7, 300)
        time.sleep(1)
        sc.capture_screen(fun_name, self.img_path)

        # 再下滑,同理
        sc.logger.info('下滑截图开始')
        result_down = sc.swipe_by_ratio(start_x, start_y, 'down', 0.3, 300)
        time.sleep(1)
        sc.capture_screen(fun_name, self.img_path)

        assert result_up and result_down is True
Esempio n. 28
0
class TestUserVideos(object):
    """个人视频详情页的测试类,分步截图."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]
    p_btn = 'com.quvideo.xiaoying:id/img_studio'

    def test_video_origin(self):
        """video详情页面的初始状态."""
        sc.logger.info('video详情页初始状态检查开始')
        fun_name = 'test_video_origin'

        sc.logger.info('点击个人中心主按钮')
        sc.first_step(self.p_btn)

        sc.logger.info('点击第一个视频标题')
        el_video_til = 'com.quvideo.xiaoying:id/xiaoying_com_video_card_title'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(el_video_til)).click()

        sc.logger.info('video详情页面初始状态截图开始')
        sc.capture_screen(fun_name, self.img_path)

    def test_video_play(self):
        """测试视频的播放."""
        sc.logger.info('测试视频的暂停/播放/进度条')
        fun_name = 'test_video_play'

        time.sleep(1)
        el_view = 'com.quvideo.xiaoying:id/xiaoying_com_activity_videoview'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(el_view)).click()
        sc.capture_screen(fun_name, self.img_path)

    """
    def test_video_reply(self):
        sc.logger.info('开始测试视频的评论功能.')
        fun_name = 'test_video_reply'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 4

        time.sleep(1)
        # 先上滑半屏,便于处理全屏视频
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300)

        # 查找评论框并输入'QA Reply Test'
        el_reply_frame = 'com.quvideo.xiaoying:id/comment_editor_view'
        el_reply = WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_id(el_reply_frame))
        sc.logger.info('评论框输入“QA Reply Test”并发送')
        el_reply.send_keys('QA Reply Test')

        WebDriverWait(sc.driver, 10, 1).until(
            lambda el: el.find_element_by_android_uiautomator(
                'text("发送")')).click()
        sc.capture_screen(fun_name, self.img_path)
    """

    def test_video_like(self):
        """测试视频的点赞功能."""
        sc.logger.info('开始测试视频的点赞功能.')
        fun_name = 'test_video_like'

        start_x = self.width // 2
        start_bottom = self.height - self.height // 4

        time.sleep(1)
        # 先上滑半屏,便于处理全屏视频
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 300)
        sc.capture_screen(fun_name, self.img_path)
        btn_like = 'com.quvideo.xiaoying:id/like_btn'
        sc.driver.find_element_by_id(btn_like).click()
        sc.capture_screen(fun_name, self.img_path)

    def test_video_download(self):
        """测试视频的下载功能."""
        sc.logger.info('开始测试视频的下载功能.')
        fun_name = 'test_video_download'

        sc.capture_screen(fun_name, self.img_path)
        down_btn = 'com.quvideo.xiaoying:id/video_detail_download_icon'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(down_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        try:
            pos_btn = 'com.quvideo.xiaoying:id/buttonDefaultPositive'
            WebDriverWait(
                sc.driver, 10,
                1).until(lambda el: el.find_element_by_id(pos_btn)).click()
            sc.driver.press_keycode(4)
        except TimeoutException:
            sc.logger.info('视频下载完成')

    def test_video_share(self):
        """测试视频的分享功能."""
        sc.logger.info('开始测试视频的分享功能.')
        fun_name = 'test_video_share'

        time.sleep(1)
        sc.capture_screen(fun_name, self.img_path)
        btn_share = 'com.quvideo.xiaoying:id/btn_share'
        sc.driver.find_element_by_id(btn_share).click()
        sc.capture_screen(fun_name, self.img_path)
Esempio n. 29
0
class TestSettings(object):
    """设置页面的测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_settings_ui(self):
        """设置:默认值UI遍."""
        sc.logger.info('设置:默认UI遍历')
        fun_name = 'test_settings_ui'

        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()

        sc.logger.info('开始进入个人空间截图')
        sc.capture_screen(fun_name, self.img_path)

        setting_btn = 'com.quvideo.xiaoying:id/btn_setting'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(setting_btn)).click()

        el_set_list = sc.driver.find_elements_by_class_name(
            'android.widget.TextView')

        for el_set_content in el_set_list:
            el_set_content.click()
            sc.capture_screen(fun_name, self.img_path)
            sc.driver.press_keycode(4)
            time.sleep(1)
            """
            try:
                sc.driver.find_element_by_id(
                    'com.quvideo.xiaoying:id/btn_setting').click()
            except NoSuchElementException:
                sc.logger.info('[%s]: 未找到设置按钮', fun_name)
            """
        sc.logger.info('设置选项UI第一页遍历完成')

    def test_settings_net(self):
        """设置:自动播放/网络/推送/分享设置."""
        sc.logger.info('设置:自动播放/网络/推送/分享设置遍历测试')
        fun_name = 'test_settings_net'

        try:
            sc.driver.find_element_by_id(
                'com.quvideo.xiaoying:id/btn_setting').click()
        except NoSuchElementException:
            sc.logger.info('已经在设置页面了,直接进行下一步')

        el_net_wifi = WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'text("只在WIFI网络上传/下载视频")'))

        sc.logger.info('点击网络设置选项')
        el_net_wifi.click()
        sc.logger.info('开始网络设置选项截图')
        sc.capture_screen(fun_name, self.img_path)
        try:
            sc.driver.find_element_by_id(
                'com.quvideo.xiaoying:id/buttonDefaultPositive').click()
        except NoSuchElementException:
            el_net_wifi.click()
            sc.driver.find_element_by_id(
                'com.quvideo.xiaoying:id/buttonDefaultPositive').click()
        el_net_wifi.click()

        sc.driver.find_element_by_android_uiautomator(
            'new UiSelector().text("接收通知推送")').click()
        sc.find_by_classes('android.widget.TextView', fun_name, self.img_path)
        sc.logger.info('通知推送设置遍历完成')

        sc.driver.press_keycode(4)
        time.sleep(1)
        sc.driver.find_element_by_android_uiautomator(
            'new UiSelector().text("分享帐号设置")').click()
        sc.capture_screen(fun_name, self.img_path)
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/img_back').click()
        sc.logger.info('网络设置相关测试完成')

    def test_settings_privacy(self):
        """设置:隐私设置."""
        sc.logger.info('设置:隐私设置')
        fun_name = 'test_settings_privacy'

        start_x = self.width // 2
        start_bottom = self.height - self.height // 10

        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'text("私信权限")')).click()

        sc.find_by_classes('android.widget.TextView', fun_name, self.img_path)
        sc.logger.info('隐私权限设置遍历完成')

        WebDriverWait(sc.driver, 10, 1).until(lambda el: el.find_element_by_id(
            'com.quvideo.xiaoying:id/img_back')).click()

        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'new UiSelector().text("隐私帐号")')).click()
        time.sleep(1)

        try:
            sc.driver.find_element_by_android_uiautomator(
                'new UiSelector().text("水印显示昵称")').click()
        except NoSuchElementException:
            sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.3, 500)
            sc.driver.find_element_by_android_uiautomator(
                'new UiSelector().text("水印显示昵称")').click()
        sc.logger.info('设置:隐私设置测试完成')

    def test_settings_live(self):
        """设置:摄像头校正."""
        sc.logger.info('设置:摄像头校正')
        fun_name = 'test_settings_live'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 10

        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.3, 500)

        sc.capture_screen(fun_name, self.img_path)
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'new UiSelector().text("摄像头校正")')).click()

        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'new UiSelector().text("校正前置摄像头")')).click()

        time.sleep(3)
        sc.logger.info('校正前置摄像头时截图')
        sc.capture_screen(fun_name, self.img_path)

        left_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_rotate_left'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(left_btn)).click()

        r_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_rotate_right'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(r_btn)).click()

        h_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_flip_horizontal'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(h_btn)).click()

        v_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_flip_vertical'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(v_btn)).click()

        sc.driver.press_keycode(4)
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'text("摄像头校正")')).click()
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'text("校正后置摄像头")')).click()

        time.sleep(2)
        sc.logger.info('校正后置摄像头时截图')
        sc.capture_screen(fun_name, self.img_path)

        left_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_rotate_left'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(left_btn)).click()

        r_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_rotate_right'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(r_btn)).click()

        h_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_flip_horizontal'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(h_btn)).click()

        v_btn = 'com.quvideo.xiaoying:id/cam_adjust_dialog_btn_flip_vertical'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(v_btn)).click()

        sc.driver.press_keycode(4)
        sc.logger.info('设置:摄像头校正测试完成')

    def test_settings_feedback(self):
        """设置:意见反馈."""
        sc.logger.info('设置:意见反馈')
        fun_name = 'test_settings_feedback'
        start_x = self.width // 2
        start_bottom = self.height - self.height // 10

        time.sleep(2)
        sc.swipe_by_ratio(start_x, start_bottom, 'up', 0.5, 500)

        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'text("意见反馈")')).click()
        try:
            sc.driver.find_element_by_id(
                'com.quvideo.xiaoying:id/feedback_btn_issue_create').click()
        except NoSuchElementException:
            sc.logger.info('当前是第一次反馈')
        el_question_msg = sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/feedback_question_msg')
        el_question_msg.send_keys('QA test feedback')

        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/feedback_question_type').click()

        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'text("完成")')).click()
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/feedback_layout_sh_').click()
        sc.capture_screen(fun_name, self.img_path)
        sc.driver.press_keycode(4)

        time.sleep(1)
        el_qq_contact = sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/feedback_contact_edit_1')
        el_qq_contact.send_keys('245603638')

        el_ph_contact = sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/feedback_contact_edit_2')
        el_ph_contact.send_keys('15857154810')

        sc.capture_screen(fun_name, self.img_path)
        sc.driver.find_element_by_android_uiautomator(
            'new UiSelector().text("提交")').click()
        time.sleep(2)
        sc.capture_screen(fun_name, self.img_path)
        """
        sc.logger.info('查看反馈')
        el_feedback = sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/feedback_layout_history_item')
        el_feedback.click()
        sc.capture_screen(fun_name, self.img_path)
        sc.driver.press_keycode(4)
        """

        left_icon = 'com.quvideo.xiaoying:id/feedback_left_icon'
        WebDriverWait(
            sc.driver, 5,
            1).until(lambda el: el.find_element_by_id(left_icon)).click()
        sc.logger.info('意见反馈测试完成')

    def test_settings_senior(self):
        """设置:高级设置和其他."""
        sc.logger.info('设置:高级设置和其他')
        fun_name = 'test_settings_senior'

        hardware_btn = WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'new UiSelector().text("视频处理硬件加速")'))
        hardware_btn.click()
        sc.capture_screen(fun_name, self.img_path)
        hardware_btn.click()

        sc.driver.find_element_by_android_uiautomator(
            'new UiSelector().text("视频保存位置")').click()
        sc.driver.press_keycode(4)

        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'new UiSelector().text("关于小影")')).click()

        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/img_back').click()

        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'new UiSelector().text("评价小影")')).click()

        sc.capture_screen(fun_name, self.img_path)
        sc.driver.press_keycode(4)

        time.sleep(1)
        sc.driver.find_element_by_android_uiautomator(
            'new UiSelector().text("成为VIP会员")').click()
        sc.driver.find_element_by_id(
            'com.quvideo.xiaoying:id/vip_home_close').click()

        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_android_uiautomator(
                'new UiSelector().text("恢复购买")')).click()
        sc.capture_screen(fun_name, self.img_path)
        sc.logger.info('设置:高级设置和其他测试完成')
Esempio n. 30
0
class TestEditSticker(object):
    """动画贴纸的测试类."""

    width, height = sc.get_size()
    img_path = sc.path_lists[0]

    def test_edit_sticker_add(self):
        """剪辑-动画贴纸-添加."""
        sc.logger.info('剪辑-动画贴纸-添加')
        fun_name = 'test_edit_sticker_add'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“效果”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("效果")')).click()

        sc.logger.info('开始点击贴纸')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("贴纸")')).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击一张贴纸')
        stick_class = 'android.widget.RelativeLayout'
        stick_id = 'com.quvideo.xiaoying:id/item_layout'
        s_list = sc.driver.find_elements_by_class_name(stick_class)
        st_list = list()
        for item in s_list:
            if item.get_attribute('resourceId') == stick_id:
                st_list.append(item)
        st_list[-2].click()
        sc.capture_screen(fun_name, self.img_path)

        btn_right = 'com.quvideo.xiaoying:id/terminator_right'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(btn_right)).click()

        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(btn_right)).click()

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)

        sc.logger.info('剪辑-动画贴纸-添加测试完成')

    def test_edit_sticker_cancel(self):
        """剪辑-动画贴纸-放弃."""
        sc.logger.info('剪辑-动画贴纸-放弃')
        fun_name = 'test_edit_sticker_cancel'

        sc.logger.info('点击创作中心主按钮')
        c_btn = 'com.quvideo.xiaoying:id/img_creation'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(c_btn)).click()

        sc.logger.info('点击“更多草稿”')
        sc.driver.find_element_by_android_uiautomator('text("更多草稿")').click()

        sc.logger.info('点击草稿封面')
        draft_img = 'com.quvideo.xiaoying:id/xiaoying_studio_img_project_thumb'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(draft_img)).click()

        sc.logger.info('尝试点击“编辑该视频”')
        edit_btn = 'com.quvideo.xiaoying:id/edit_this_video_text'
        try:
            WebDriverWait(
                sc.driver, 5,
                1).until(lambda el: el.find_element_by_id(edit_btn)).click()
        except TimeoutException:
            sc.logger.info('该视频已经在编辑页,跳过此步骤')

        sc.logger.info('点击“效果”')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("效果")')).click()

        sc.logger.info('开始点击贴纸')
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_android_uiautomator(
                'text("贴纸")')).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('点击一张贴纸')
        stick_class = 'android.widget.RelativeLayout'
        stick_id = 'com.quvideo.xiaoying:id/item_layout'
        s_list = sc.driver.find_elements_by_class_name(stick_class)
        st_list = list()
        for item in s_list:
            if item.get_attribute('resourceId') == stick_id:
                st_list.append(item)
        st_list[-1].click()
        sc.capture_screen(fun_name, self.img_path)

        btn_right = 'com.quvideo.xiaoying:id/terminator_right'
        WebDriverWait(sc.driver, 10, 1).until(
            lambda c_btn: c_btn.find_element_by_id(btn_right)).click()

        btn_left = 'com.quvideo.xiaoying:id/terminator_left'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda c_btn: c_btn.find_element_by_id(btn_left)).click()
        sc.capture_screen(fun_name, self.img_path)

        pos_btn = 'com.quvideo.xiaoying:id/xiaoying_alert_dialog_positive'
        WebDriverWait(
            sc.driver, 10,
            1).until(lambda el: el.find_element_by_id(pos_btn)).click()
        sc.capture_screen(fun_name, self.img_path)

        sc.logger.info('返回创作中心主界面')
        for i in range(2):
            time.sleep(1)
            sc.driver.press_keycode(4)
        sc.logger.info('剪辑-动画贴纸-放弃测试完成')