import random from base.base_page import BasePage from elements.vaq_answer_elements import VAQAnswerElements as Answer from selenium.common.exceptions import * from selenium.webdriver.common.by import By import time class VAQAnswerPage(BasePage): """ 答题页面 """ loading_count = 0 def answer(self): # 暂停3秒 # 预选图片 # 获取到所有图片选项 pre_pictures = self.get_elements_wait(Answer.picture) for picture in pre_pictures: # 随机1到3 number = random.randint(1, 3) # 拼接要点击的按钮的定位 btn_loc = (By.XPATH, "div[3]/div[" + str(number) + "]") # 点击按钮 self.get_element_in(picture, btn_loc).click() time.sleep(0.1) # 点击下一步按钮 self.click(Answer.next_btn) time.sleep(1) # 点击开始测试 self.click(Answer.start_btn) # 细致分类图片 # 每个步骤选择图片的数量 step_picture = [2, 2, 4, 4, 7, 7, 10, 10, 0] i = 0 for num in step_picture: for k in range(0, num): # 获取到图片 picture = self.get_elements_wait(Answer.picture)[0] # 拼接要点击的按钮的定位 btn_loc = (By.XPATH, "div[2]/div[1]/img") # 点击按钮 btn = self.get_element_in(picture, btn_loc) self.click_element_js(btn) i += 1 # 点击下一步按钮 self.click(Answer.next_btn) # 点击提交按钮 self.click_wait(Answer.submit_btn) # 数据是否上传完成 time.sleep(10) if self.upload_is_success(): return True return False 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) time.sleep(1) self.click_wait(Answer.start_btn) time.sleep(1) self.click_wait(Answer.start_btn) time.sleep(1)