| | |
| | | from selenium.common.exceptions import * |
| | | |
| | | import time |
| | | import re |
| | | |
| | | |
| | | class CAQAnswerPage(BasePage): |
| | |
| | | """ |
| | | 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): |
| | | """ |
| | |
| | | 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 |