yj
2024-07-25 c0dc1bc9676d0bc15355cfd16e9bb92a31518aa8
po/caq_answer_page.py
@@ -1,10 +1,11 @@
import random
from base.base_page import BasePage
from elements.caq_answer_elements import CAQAnswerElements as Answer
from elements.caq_answer_elements import CAQAnswerElements
from selenium.common.exceptions import *
import time
import re
class CAQAnswerPage(BasePage):
@@ -13,53 +14,64 @@
    """
    loading_count = 0
    elements = CAQAnswerElements
    def answer(self):
        # 暂停3秒
        time.sleep(3)
        i = 0
        while i < 27:
            if i == 0:
                self.click_wait(Answer.continue_testing_btn)
            elif i < 4:
                # 获取到所有选项
                options_1 = self.elements_is_visibility(Answer.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(Answer.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(Answer.options_3)
                self.click_element_js(options_3[number])
        # 点击继续测试
        self.click(self.elements.continue_testing_btn, 5)
                options_4 = self.elements_is_visibility(Answer.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(Answer.options_5)
                self.click_element_js(options_5[number])
                self.click_js(Answer.next_btn)
            if i == 4:
                self.click_wait(Answer.continue_testing_btn)
            # # 标题不存在直接返回False
            # if not self.title_is_display():
            #     return False
            if 4 < i < 26:
                options_6 = self.elements_is_visibility(Answer.options_6)
                number = random.randint(0, 4)
                self.click_element_js(options_6[number])
                if i == 23:
                    self.click_js(Answer.submit_btn)
                    # 数据是否上传完成
                    time.sleep(15)
                    if self.upload_is_success():
                        return True
                else:
                    self.click_js(Answer.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):
        """
@@ -69,7 +81,7 @@
        i = 0
        while i < 60:
            try:
                self.get_element_wait(Answer.upload_success_title)
                self.get_element_wait(self.elements.upload_success_title)
                return True
            except TimeoutException:
                i += 1
@@ -82,7 +94,7 @@
        :return:
        """
        try:
            button = self.get_element(Answer.submit_btn)
            button = self.get_ele(self.es.submit_btn)
            if button.is_enabled():
                return True
            else:
@@ -97,7 +109,7 @@
        """
        try:
            # 点击继续测试按钮
            button = self.get_element(Answer.continue_testing_btn)
            button = self.get_ele(self.es.continue_testing_btn)
            if button.is_enabled():
                return True
            else:
@@ -112,7 +124,7 @@
        """
        try:
            # 获取标题
            self.get_element_wait(Answer.title)
            self.get_element_wait(self.es.title)
            return True
        except TimeoutException:
            return False
@@ -125,7 +137,7 @@
        i = 0
        while i < 10:
            try:
                self.get_element(Answer.loading_text)
                self.get_element(self.es.loading_text)
                i += 1
                time.sleep(1)
            except:
@@ -138,4 +150,4 @@
        开始测试按钮
        :return:
        """
        self.click_wait(Answer.start_btn)
        self.click_wait(self.es.start_btn)