| | |
| | | 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): |
| | |
| | | """ |
| | | loading_count = 0 |
| | | |
| | | def answer_MAQ(self): |
| | | 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): |
| | | """ |
| | |
| | | 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 |
| | |
| | | :return: |
| | | """ |
| | | try: |
| | | button = self.get_element(Answer.submit_btn) |
| | | button = self.get_ele(self.es.submit_btn) |
| | | if button.is_enabled(): |
| | | return True |
| | | else: |
| | |
| | | """ |
| | | 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: |
| | |
| | | """ |
| | | try: |
| | | # 获取标题 |
| | | self.get_element_wait(Answer.title) |
| | | self.get_element_wait(self.es.title) |
| | | return True |
| | | except TimeoutException: |
| | | return False |
| | |
| | | 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: |
| | |
| | | 开始测试按钮 |
| | | :return: |
| | | """ |
| | | self.click_wait(Answer.start_btn) |
| | | self.click_wait(self.es.start_btn) |