import random from base.base_page import BasePage from elements.maq_answer_elements import MAQAnswerElements from selenium.common.exceptions import * import time import re class MAQAnswerPage(BasePage): """ 答题页面 """ loading_count = 0 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(): # 判断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(): return False try: # 获取到所有选项 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(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): """ 判断数据是否上传完成 :return: """ i = 0 while i < 60: try: self.get_ele(self.elements.upload_success_title, timeout=5) return True except TimeoutException: i += 1 time.sleep(1) return False def submit_btn_is_display(self): """ 判断提交按钮是否存在 :return: """ try: button = self.get_ele(self.elements.submit_btn) if button.is_enabled(): return True else: return False except NoSuchElementException: return False def continue_btn_is_display(self): """ 判断继续测试按钮是否出现 :return: bool """ try: # 点击继续测试按钮 button = self.get_ele(self.elements.continue_testing_btn) if button.is_enabled(): return True else: return False except NoSuchElementException: return False def title_is_display(self): """ 判断标题是否出现 :return: bool """ try: # 获取标题 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.oper_elem("") # i += 1 # time.sleep(1) # except: # return False # else: # return True