yj
2024-07-24 3b84cce1ee43215b9f398148fda19f4b1025856b
po/maq_answer_page.py
@@ -1,25 +1,126 @@
import random
from base.base_page import BasePage
from elements.maq_answer_elements import MAQAnswerElements as Answer
from elements.maq_answer_elements import MAQAnswerElements
from selenium.common.exceptions import *
import time
import re
class MAQAnswerPage(BasePage):
    """
    答题页面
    """
    loading_count = 0
    def answer_MAQ(self):
    elements = MAQAnswerElements
    tip_timing = 35
    def exercise_answer(self):
        # 获取到题目
        time.sleep(3)
        title = self.get_ele(self.elements.q_title, 5)
        # 截取已答数量与总数量
        match = re.search(r"(\d+)/(\d+)", title.text)
        current = int(match.group(1))
        total = int(match.group(2))
        while current <= total:
            # 获取到所有选项
            options = self.get_eles(self.elements.options, 5)
            number = random.randint(0, 5)
            if options[number].is_enabled():
                options[number].click()
                current += 1
                continue
        time.sleep(3)
        # 点击提交按钮
        self.click(self.elements.exercise_submit_btn, 10)
    def answer(self):
        # 获取到题目
        time.sleep(3)
        title = self.get_ele(self.elements.q_title, 5)
        # 截取已答数量与总数量
        match = re.search(r"(\d+)/(\d+)", title.text)
        current = int(match.group(1))
        total = int(match.group(2))
        while current <= total:
            print(f"\n现在是MAQ第{current}题")
            # 触发事中
            if current == self.tip_timing:
                time.sleep(5)
                self.click(self.elements.continue_testing_btn, 10)
            # 获取到所有选项
            options = self.get_eles(self.elements.options, 5)
            number = random.randint(0, 5)
            if options[number].is_enabled():
                options[number].click()
                current += 1
                continue
        time.sleep(3)
        # 点击提交按钮
        self.click(self.elements.submit_btn, 10)
        # while True:
        #     # 获取到所有选项
        #     options = self.get_eles(self.se.options)
        #     if len(options) < 6:
        #         continue
        #     number = random.randint(0, 5)
        #     if options[number].is_enabled():
        #         # 获取到题目
        #         q_title = self.get_ele(self.se.q_title).text
        #         # q_title与question_title不相同则写入question中
        #         # 遍历字典
        #         # if question:
        #         #     for key in question.keys():
        #         #         q_title = self.get_ele(self.se.q_title).text
        #         #         if question[key]["title"] in q_title and "answer" not in question[key]:
        #         #             question[key]["answer"] = number + 1
        #         #             question_title = q_title
        #         #             break
        #         options[number].click()
        #
        #     # 提交按钮存在则点击
        #     if self.submit_btn_is_display():
        #         self.click(self.se.submit_btn)
        #         # 数据是否上传完成
        #         time.sleep(15)
        #         if self.upload_is_success():
        #             if hint:
        #                 return flag
        #             return True
        #         # 是否网络异常
        #         try:
        #             self.get_ele(self.se.network_exception_title)
        #             return "网络异常"
        #         except NoSuchElementException:
        #             pass
        #         return False
    def answer2(self, hint=None, question: dict = None):
        flag = False
        # 暂停3秒
        time.sleep(3)
        # 点击开始答题
        question_title = None
        while True:
            # time.sleep(0.5)
            # 继续测试按钮出现则点击
            if self.continue_btn_is_display():
                self.click(Answer.continue_testing_btn)
                # 判断hint是否有内容
                if hint:
                    # 获取提示语内容
                    hint_text = self.get_ele(self.elements.hint_text).text
                    # 判断提示语内容是否包含传入的hint
                    if hint in hint_text:
                        flag = True
                self.click(self.elements.continue_testing_btn)
            # 标题不存在直接返回False
            if not self.title_is_display():
@@ -27,22 +128,41 @@
            try:
                # 获取到所有选项
                options = self.get_elements(Answer.options)
                options = self.get_eles(self.elements.options)
                if len(options) < 6:
                    continue
                number = random.randint(0, 5)
                if options[number].is_enabled():
                    # 获取到题目
                    # q_title = self.get_ele(self.se.q_title).text
                    # q_title与question_title不相同则写入question中
                    # 遍历字典
                    # if question:
                    #     for key in question.keys():
                    #         q_title = self.get_ele(self.se.q_title).text
                    #         if question[key]["title"] in q_title and "answer" not in question[key]:
                    #             question[key]["answer"] = number + 1
                    #             question_title = q_title
                    #             break
                    options[number].click()
            except:
                pass
            # 提交按钮存在则点击
            if self.submit_btn_is_display():
                self.click(Answer.submit_btn)
                self.click(self.elements.submit_btn)
                # 数据是否上传完成
                time.sleep(15)
                if self.upload_is_success():
                    if hint:
                        return flag
                    return True
                # 是否网络异常
                try:
                    self.get_ele(self.elements.network_exception_title)
                    return "网络异常"
                except NoSuchElementException:
                    pass
                return False
    def upload_is_success(self):
@@ -53,7 +173,7 @@
        i = 0
        while i < 60:
            try:
                self.get_element_wait(Answer.upload_success_title)
                self.get_ele(self.elements.upload_success_title, timeout=5)
                return True
            except TimeoutException:
                i += 1
@@ -66,7 +186,7 @@
        :return:
        """
        try:
            button = self.get_element(Answer.submit_btn)
            button = self.get_ele(self.elements.submit_btn)
            if button.is_enabled():
                return True
            else:
@@ -81,7 +201,7 @@
        """
        try:
            # 点击继续测试按钮
            button = self.get_element(Answer.continue_testing_btn)
            button = self.get_ele(self.elements.continue_testing_btn)
            if button.is_enabled():
                return True
            else:
@@ -96,30 +216,23 @@
        """
        try:
            # 获取标题
            self.get_element_wait(Answer.title)
            self.get_ele(self.elements.title, timeout=10)
            return True
        except TimeoutException:
            return False
    def loadin_text(self):
        """
        判断加载框加载,如果加载超过10秒直接退出当前测试
        :return:
        """
        i = 0
        while i < 10:
            try:
                self.get_element(Answer.loading_text)
                i += 1
                time.sleep(1)
            except:
                return False
        else:
            return True
    def start_btn(self):
        """
        开始测试按钮
        :return:
        """
        self.click_wait(Answer.start_btn)
    # def loadin_text(self):
    #     """
    #     判断加载框加载,如果加载超过10秒直接退出当前测试
    #     :return:
    #     """
    #     i = 0
    #     while i < 10:
    #         try:
    #             self.oper_elem("")
    #             i += 1
    #             time.sleep(1)
    #         except:
    #             return False
    #     else:
    #         return True