阳洁
2023-07-28 ddf66cf155af3805323ec55ae6814f2d23d40c07
po/maq_answer_page.py
@@ -1,7 +1,7 @@
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
@@ -11,15 +11,30 @@
    """
    答题页面
    """
    loading_count = 0
    def answer_MAQ(self):
    se = MAQAnswerElements
    def answer(self, hint=None, question: dict = None):
        flag = False
        # 暂停3秒
        time.sleep(3)
        # 点击开始答题
        self.click(self.se.start_btn)
        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.se.hint_text).text
                    # 判断提示语内容是否包含传入的hint
                    if hint in hint_text:
                        flag = True
                self.click(self.se.continue_testing_btn)
            # 标题不存在直接返回False
            if not self.title_is_display():
@@ -27,22 +42,41 @@
            try:
                # 获取到所有选项
                options = self.get_elements(Answer.options)
                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()
            except:
                pass
            # 提交按钮存在则点击
            if self.submit_btn_is_display():
                self.click(Answer.submit_btn)
                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 upload_is_success(self):
@@ -50,11 +84,15 @@
        判断数据是否上传完成
        :return:
        """
        try:
            self.get_element_wait(Answer.upload_success_title)
            return True
        except TimeoutException:
            return False
        i = 0
        while i < 60:
            try:
                self.get_ele(self.se.upload_success_title, timeout=5)
                return True
            except TimeoutException:
                i += 1
                time.sleep(1)
        return False
    def submit_btn_is_display(self):
        """
@@ -62,7 +100,7 @@
        :return:
        """
        try:
            button = self.get_element(Answer.submit_btn)
            button = self.get_ele(self.se.submit_btn)
            if button.is_enabled():
                return True
            else:
@@ -77,7 +115,7 @@
        """
        try:
            # 点击继续测试按钮
            button = self.get_element(Answer.continue_testing_btn)
            button = self.get_ele(self.se.continue_testing_btn)
            if button.is_enabled():
                return True
            else:
@@ -92,30 +130,23 @@
        """
        try:
            # 获取标题
            self.get_element_wait(Answer.title)
            self.get_ele(self.se.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