yj
2024-07-25 c0dc1bc9676d0bc15355cfd16e9bb92a31518aa8
po/caq_answer_page.py
@@ -5,6 +5,7 @@
from selenium.common.exceptions import *
import time
import re
class CAQAnswerPage(BasePage):
@@ -13,57 +14,64 @@
    """
    loading_count = 0
    es = CAQAnswerElements
    elements = CAQAnswerElements
    def answer(self):
        # 点击开始按钮
        self.click(self.es.start_btn, timeout=10)
        # 暂停3秒
        time.sleep(3)
        i = 0
        while i < 27:
            if i == 0:
                self.click(self.es.continue_testing_btn, timeout=10)
            elif i < 4:
                # 获取到所有选项
                options_1 = self.elements_is_visibility(self.es.options_1)
        # 点击继续测试
        self.click(self.elements.continue_testing_btn, 5)
        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现在是CAQ分片1第{current}题")
            # 获取所有题目
            questions = self.get_eles(self.elements.questions, 5)
            for question in questions:
                options = self.get_elements_in(question, self.elements.options)
                number = random.randint(0, 4)
                self.click_element_js(options_1[number])
                options[number].click()
                options_2 = self.elements_is_visibility(self.es.options_2)
                self.click_element_js(options_2[number])
            if current == 1:
                self.click(self.elements.btn)
            else:
                self.click(self.elements.next_btn)
            current += 1
            if current <= total:
                time.sleep(1)
                # 将页面滑动到最顶部
                self.click(self.elements.scroll_top_btn, 5)
                time.sleep(2)
        time.sleep(2)
                options_3 = self.elements_is_visibility(self.es.options_3)
                self.click_element_js(options_3[number])
        # 点击继续测试
        self.click(self.elements.continue_testing_btn, 5)
                options_4 = self.elements_is_visibility(self.es.options_4)
                self.click_element_js(options_4[number])
        title = self.get_ele(self.elements.q_title_2, 5)
        # 截取已答数量与总数量
        match = re.search(r"(\d+)/(\d+)", title.text)
        current = int(match.group(1))
        total = int(match.group(2))
                options_5 = self.elements_is_visibility(self.es.options_5)
                self.click_element_js(options_5[number])
                self.click_js(self.es.next_btn)
            if i == 4:
                self.click(self.es.continue_testing_btn, timeout=10)
            # # 标题不存在直接返回False
            # if not self.title_is_display():
            #     return False
            if 4 < i < 26:
                options_6 = self.elements_is_visibility(self.es.options_6)
                number = random.randint(0, 4)
                self.click_element_js(options_6[number])
                if i == 23:
                    self.click_js(self.es.submit_btn)
                    # 数据是否上传完成
                    time.sleep(15)
                    if self.upload_is_success():
                        return True
                else:
                    self.click_js(self.es.next_btn)
            i += 1
        while current <= total:
            print(f"\n现在是CAQ分片2第{current}题")
            # 获取到所有选项
            options = self.get_eles(self.elements.options_2, 5)
            number = random.randint(0, 4)
            options[number].click()
            if current == 1:
                self.click(self.elements.btn)
            else:
                if current == total:
                    time.sleep(1)
                self.click(self.elements.next_btn)
            current += 1
    def upload_is_success(self):
        """
@@ -73,7 +81,7 @@
        i = 0
        while i < 60:
            try:
                self.get_element_wait(self.es.upload_success_title)
                self.get_element_wait(self.elements.upload_success_title)
                return True
            except TimeoutException:
                i += 1