コード例 #1
0
class AppCurriculum(unittest.TestCase):
    """课程"""
    def setUp(self):
        try:
            self.base_page = BasePage()
            self.log = MyLog().get_log().logger
        except Exception as e:
            self.log.error(e)
            raise Exception("出现异常!")

    def test_app_curriculum(self):
        """app课程"""
        try:
            # 用例开始,输入负责人姓名,必须
            self.base_page.case_start("李彬")

            if not self.base_page.home_page_to("课程"):  # 判断待办事项中是否有课程
                if AppCurriculum.enter(self) is False:  # 首页进入课程
                    # 如果没有课程就结束用例
                    self.base_page.case_pass()
                    return

            # 开始学习
            AppCurriculum.study(self)

            # 用例成功,必须
            self.base_page.case_pass()
        except Exception as e:
            self.log.error(e)
            # 用例失败,必须
            self.base_page.case_failed()
            raise Exception("出现异常!")
        finally:
            self.base_page.back_to()

    def enter(self):
        """进入课程"""
        module = ("css_selector", "img[src='img/lesson.png']")  # 首页“课程”menu
        title = ("css_selector", "div.title.ng-binding")  # “课程”title
        curriculum_list = (
            "css_selector",
            "ion-item.item-remove-animate.item-text-wrap.item.item-complex"
        )  # “课程”list
        state = ("css_selector", "span.tag.ng-binding.tag-orange.tag-right"
                 )  # “未学习”标签

        try:
            self.assertIs(self.base_page.displayed(module), True, "首页异常!")
            self.log.debug("从首页进入课程模块")
            self.base_page.click_elem_tag(module)
            self.base_page.screen_shot()
            self.assertIs(self.base_page.displayed(title), True, "进入课程模块异常!")

            if self.base_page.displayed(curriculum_list):
                if self.base_page.displayed(state):
                    self.log.debug("进入课程")
                    self.base_page.click_elem_tag(state, roll=True)
                else:
                    self.log.debug("暂无未学习的课程,进入已学习的课程中重新学习!")
                    count = len(
                        self.base_page.find_elements(curriculum_list))  # 课程数量
                    i = random.randint(0, count - 1)
                    self.base_page.click_elem_tag(curriculum_list,
                                                  tag=i,
                                                  roll=True)
                return True
            else:
                self.log.debug("暂无内容!")
                return False
        except Exception as e:
            self.log.error(e)
            raise Exception("出现异常!")

    def study(self):
        """学习"""
        curriculum_name = ("css_selector",
                           "h1.exam-title.font-large.text-center.ng-binding"
                           )  # 课程名称
        curriculum_exam = (
            "css_selector",
            "button.button.button-full.button-calm.lesson-footer-button"
        )  # 随堂考试
        curriculum_list = (
            "css_selector",
            "ion-item.item-remove-animate.item-complex.item-text-wrap.item"
        )  # 课件list
        # state = ("css_selector", "span.tag.ng-binding.tag-orange.tag-right")  # “未学习”标签
        courseware_name = ("css_selector",
                           "h2.exam-title.font-large.text-center.ng-binding"
                           )  # 课件名称
        start_answer_button = ("xpath", "//a[contains(text(), '开始学习')]")

        try:
            self.base_page.screen_shot()
            self.assertIs(self.base_page.displayed(curriculum_name), True,
                          "进入课程异常!")
            self.base_page.get_text(curriculum_name, text="课程名称:")

            # 随堂考试(只能放课件学习的前面,不然会有句柄切换问题)
            if self.base_page.displayed(curriculum_exam):
                AppCurriculum.answer(self)
                self.base_page.back_to(curriculum_name)

            curriculum_count = len(
                self.base_page.find_elements(curriculum_list))
            if curriculum_count != 0:
                self.base_page.switch_handle(curriculum_list)
                i = random.randint(0, curriculum_count - 1)
                self.base_page.click_elem_tag(curriculum_list,
                                              tag=i,
                                              roll=True)
                self.assertIs(self.base_page.displayed(courseware_name), True,
                              "进入课件异常!")
                self.base_page.get_text(courseware_name, text="进入课件:")
                self.base_page.screen_shot()

                if self.base_page.displayed(start_answer_button):
                    self.log.debug("点击开始学习按钮")
                    self.base_page.click_elem_tag(start_answer_button, t=2)
                    self.base_page.screen_shot()

                self.base_page.back_to(curriculum_name)
                self.log.debug("学习完成!")
            else:
                self.log.debug("暂无内容!")
        except Exception as e:
            self.log.error(e)
            raise Exception("出现异常!")

    def answer(self):
        """随堂考试"""
        curriculum_exam = (
            "css_selector",
            "button.button.button-full.button-calm.lesson-footer-button"
        )  # 随堂考试
        count_num_elem = ("css_selector", "span.item-num.ng-binding"
                          )  # 题号和试题数量
        option_elem = ("css_selector", "li.option-list-li")  # 选项
        next_elem = ("css_selector", "div.col.col-33.col-center.text-right"
                     )  # 下一题
        submit_elem = ("css_selector", "a.button.button-clear.button-calm"
                       )  # 提交
        result_element = ("css_selector", "div.title.ng-binding")  # 练习结果title
        answer_sheet_elem = ("css_selector",
                             "button.button.button-calm.exam-button"
                             )  # 答题页面的右上角的“答题卡”
        submit_button = ("css_selector",
                         "button.button.button-block.button-calm")  # 提交按钮
        # 登录成功提示,有未答题提示,自动提交试卷提示
        popup_title = ("css_selector", "h3.popup-title.ng-binding")  # 提示框title

        try:
            self.log.debug("进入随堂考试")
            self.base_page.click_elem_tag(curriculum_exam)
            self.base_page.screen_shot()

            # 用答题页面的“答题卡”元素断言
            self.assertIs(self.base_page.displayed(answer_sheet_elem), True,
                          "进入答题页异常!")
            # 获取题目总数
            num = self.base_page.get_text(count_num_elem)
            count_num_str = num.split('/')[1:][0]  # 考题总数
            current_num_str = num.split('/')[:1][0]  # 当前题号

            self.log.debug("开始答题")
            count_num = int(count_num_str)
            current_num = int(current_num_str)

            while current_num <= count_num:
                self.log.debug("第%s题" % current_num)
                count_option = len(
                    self.base_page.find_elements(option_elem))  # 选项数量
                i = random.randint(0, count_option - 1)
                self.base_page.click_elem_tag(option_elem, tag=i)
                self.base_page.screen_shot()
                # 点击下一题按钮
                if current_num < count_num:
                    self.base_page.click_elem_tag(next_elem)
                    current_num += 1
                else:
                    break

                if current_num >= 6:
                    self.log.debug("中断答题")
                    self.base_page.screen_shot()
                    self.base_page.click_elem_tag(answer_sheet_elem)
                    self.base_page.screen_shot()

                    if not self.base_page.displayed(popup_title):
                        self.log.debug("进入答题卡页面提交试卷!")
                        # 点击提交按钮
                        self.base_page.click_elem_tag(submit_button, roll=True)
                        self.base_page.screen_shot()
                        break
                    else:
                        break

            # 手动提交试卷
            if current_num == count_num and not self.base_page.displayed(
                    popup_title):
                self.log.debug("答题完毕后点击'提交'按钮,手动提交试卷!")
                self.base_page.click_elem_tag(submit_elem, tag=1)
                self.base_page.screen_shot()
            # 自动提交试卷(中断答题/超过离开次数)
            elif self.base_page.displayed(popup_title):
                self.base_page.popup()
            # 用成绩单页面的“成绩单”元素断言
            self.assertIs(self.base_page.displayed(result_element), True,
                          "考试结果提交异常!")
            self.log.debug("提交成功!")
        except Exception as e:
            self.log.error(e)
            raise Exception("出现异常!")

    def tearDown(self):
        self.base_page.case_end()
コード例 #2
0
class AppCourseware(unittest.TestCase):
    """课件"""

    def setUp(self):
        try:
            self.base_page = BasePage()
            self.log = MyLog().get_log().logger
        except Exception as e:
            self.log.error(e)
            raise Exception("出现异常!")

    def test_app_courseware(self):
        """app课件"""
        top_menu = ("xpath", "//div[@class='nw-tab']/div")  # 课件类型menu
        search_menu = ("css_selector", "button.button.button-calm.exam-button")  # 搜索按钮
        search_input = ("css_selector", "input[type='text']")  # 搜索内容
        search_button = ("css_selector", "button.button.button-small.button-clear.button-dark.search-button.font-small")  # 搜索按钮
        global text
        text = ""
        try:
            # 用例开始,输入负责人姓名,必须
            self.base_page.case_start("李彬")

            if not self.base_page.home_page_to("课件"):  # 判断待办事项中是否有课件
                if AppCourseware.enter(self) is False:  # 首页进入课件
                    # 如果没有课件就结束用例
                    self.base_page.case_pass()
                    return

            # 开始学习
            self.log.debug("进入全部:")
            AppCourseware.study(self)
            type_count = len(self.base_page.find_elements(top_menu))  # 课件类型数量
            i = 1
            while i < type_count:
                self.base_page.get_text(top_menu, tag=i, text="进入:")
                self.base_page.click_elem_tag(top_menu, tag=i)
                AppCourseware.study(self, tag=i)
                i += 1

            self.log.debug("进入搜索:")
            self.base_page.click_elem_tag(search_menu)
            self.base_page.input_tag(search_input, text)
            self.base_page.screen_shot()

            self.base_page.switch_handle(search_button)
            self.base_page.click_elem_tag(search_button)
            self.base_page.screen_shot()

            self.base_page.switch_handle(search_button)
            AppCourseware.study(self)

            # 用例成功,必须
            self.base_page.case_pass()
        except Exception as e:
            self.log.error(e)
            # 用例失败,必须
            self.base_page.case_failed()
            raise Exception("出现异常!")
        finally:
            self.base_page.back_to()

    def enter(self):
        """进入课件"""
        module = ("css_selector", "img[src='img/courseware.png']")  # 首页“课件”menu
        title = ("css_selector", "div.title.ng-binding")  # “课件”title
        all_list = ("css_selector", "ion-item.item-remove-animate.item-text-wrap.item.item-complex")  # “课件”list

        try:
            self.assertIs(self.base_page.displayed(module), True, "首页异常!")
            self.log.debug("从首页进入课件模块")
            self.base_page.click_elem_tag(module)
            self.base_page.screen_shot()

            self.base_page.switch_handle(title)
            self.assertIs(self.base_page.displayed(title), True, "进入课件模块异常!")
            if self.base_page.displayed(all_list):
                return True
            else:
                self.log.debug("暂无内容!")
                return False
        except Exception as e:
            self.log.error(e)
            raise Exception("出现异常!")

    def study(self, tag=0):
        """学习课件"""
        top_menu = ("xpath", "//div[@class='nw-tab']/div")  # 课件类型menu
        courseware_list = ("css_selector", "ion-item.item-remove-animate.item-complex.item-text-wrap.item")  # 课件list
        courseware_name = ("css_selector", "h2.exam-title.font-large.text-center.ng-binding")  # 课件名称
        start_answer_button = ("xpath", "//a[contains(text(), '开始学习')]")

        try:
            courseware_count = len(self.base_page.find_elements(courseware_list))
            if courseware_count != 0:
                self.base_page.click_elem_tag(courseware_list)
                self.assertIs(self.base_page.displayed(courseware_name), True, "进入课件列表异常!")
                name = self.base_page.get_text(courseware_name, text="进入课件:")
                self.base_page.screen_shot()
                global text
                text = name

                self.base_page.switch_handle(start_answer_button)
                self.assertIs(self.base_page.displayed(start_answer_button), True, "进入课件主页异常!")
                self.log.debug("点击开始学习按钮")
                self.base_page.click_elem_tag(start_answer_button, t=2)
                self.base_page.screen_shot()

                self.base_page.back_to(top_menu)
                self.base_page.click_elem_tag(top_menu, tag=tag)
                self.log.debug("学习完成!")
            else:
                self.log.debug("暂无内容!")
        except Exception as e:
            self.log.error(e)
            raise Exception("出现异常!")

    def tearDown(self):
        self.base_page.case_end()