import random from base.base_page import BasePage from elements.caq_answer_elements import CAQAnswerElements as Answer from selenium.common.exceptions import * import time class CAQAnswerPage(BasePage): """ 答题页面 """ loading_count = 0 def answer_MAQ(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) number = random.randint(0, 4) self.click_element_js(options_1[number]) options_2 = self.elements_is_visibility(Answer.options_2) self.click_element_js(options_2[number]) options_3 = self.elements_is_visibility(Answer.options_3) self.click_element_js(options_3[number]) options_4 = self.elements_is_visibility(Answer.options_4) self.click_element_js(options_4[number]) 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 def upload_is_success(self): """ 判断数据是否上传完成 :return: """ i = 0 while i < 60: try: self.get_element_wait(Answer.upload_success_title) return True except TimeoutException: i += 1 time.sleep(1) return False def submit_btn_is_display(self): """ 判断提交按钮是否存在 :return: """ try: button = self.get_element(Answer.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_element(Answer.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_element_wait(Answer.title) 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)