| | |
| | | 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 |
| | | import re |
| | | |
| | | |
| | | class MAQAnswerPage(BasePage): |
| | | """ |
| | | 答题页面 |
| | | """ |
| | | |
| | | loading_count = 0 |
| | | |
| | | def answer_MAQ(self): |
| | | elements = MAQAnswerElements |
| | | |
| | | tip_timing = 35 |
| | | |
| | | def exercise_answer(self): |
| | | # 获取到题目 |
| | | 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: |
| | | # 获取到所有选项 |
| | | options = self.get_eles(self.elements.options, 5) |
| | | number = random.randint(0, 5) |
| | | if options[number].is_enabled(): |
| | | options[number].click() |
| | | current += 1 |
| | | continue |
| | | time.sleep(3) |
| | | # 点击提交按钮 |
| | | self.click(self.elements.exercise_submit_btn, 10) |
| | | |
| | | def answer(self): |
| | | # 获取到题目 |
| | | 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现在是MAQ第{current}题") |
| | | # 触发事中 |
| | | if current == self.tip_timing: |
| | | time.sleep(5) |
| | | self.click(self.elements.continue_testing_btn, 10) |
| | | |
| | | # 获取到所有选项 |
| | | options = self.get_eles(self.elements.options, 5) |
| | | number = random.randint(0, 5) |
| | | if options[number].is_enabled(): |
| | | options[number].click() |
| | | current += 1 |
| | | continue |
| | | |
| | | time.sleep(3) |
| | | # 点击提交按钮 |
| | | self.click(self.elements.submit_btn, 10) |
| | | # while True: |
| | | # # 获取到所有选项 |
| | | # 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() |
| | | # |
| | | # # 提交按钮存在则点击 |
| | | # if self.submit_btn_is_display(): |
| | | # 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 answer2(self, hint=None, question: dict = None): |
| | | flag = False |
| | | # 暂停3秒 |
| | | time.sleep(3) |
| | | # 点击开始答题 |
| | | 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.elements.hint_text).text |
| | | # 判断提示语内容是否包含传入的hint |
| | | if hint in hint_text: |
| | | flag = True |
| | | self.click(self.elements.continue_testing_btn) |
| | | |
| | | # 标题不存在直接返回False |
| | | if not self.title_is_display(): |
| | |
| | | |
| | | try: |
| | | # 获取到所有选项 |
| | | options = self.get_elements(Answer.options) |
| | | options = self.get_eles(self.elements.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.elements.submit_btn) |
| | | # 数据是否上传完成 |
| | | time.sleep(15) |
| | | if self.upload_is_success(): |
| | | if hint: |
| | | return flag |
| | | return True |
| | | # 是否网络异常 |
| | | try: |
| | | self.get_ele(self.elements.network_exception_title) |
| | | return "网络异常" |
| | | except NoSuchElementException: |
| | | pass |
| | | return False |
| | | |
| | | def upload_is_success(self): |
| | |
| | | i = 0 |
| | | while i < 60: |
| | | try: |
| | | self.get_element_wait(Answer.upload_success_title) |
| | | self.get_ele(self.elements.upload_success_title, timeout=5) |
| | | return True |
| | | except TimeoutException: |
| | | i += 1 |
| | |
| | | :return: |
| | | """ |
| | | try: |
| | | button = self.get_element(Answer.submit_btn) |
| | | button = self.get_ele(self.elements.submit_btn) |
| | | if button.is_enabled(): |
| | | return True |
| | | else: |
| | |
| | | """ |
| | | try: |
| | | # 点击继续测试按钮 |
| | | button = self.get_element(Answer.continue_testing_btn) |
| | | button = self.get_ele(self.elements.continue_testing_btn) |
| | | if button.is_enabled(): |
| | | return True |
| | | else: |
| | |
| | | """ |
| | | try: |
| | | # 获取标题 |
| | | self.get_element_wait(Answer.title) |
| | | self.get_ele(self.elements.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 |