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
|