def get_element_attribute(self, loc, module, attribute_name, timeout=20, poll_frequency=0.5): """ :param loc: 元素定位 :param module: 页面+页面操作行为 :param attribute_name: 元素属性名称 :param timeout: 超时时限 :param poll_frequency: 轮询时间 :return: 无 """ # 1.等待元素可见 # 2.获取该元素 # 3.获取元素属性值 self.wait_element_visible(loc, module, timeout, poll_frequency) ele = self.get_element(loc, module, timeout, poll_frequency) logger.info(f"{module}→→→获取元素属性值:{loc}") try: attribute_text = ele.get_attribute(attribute_name) except: logger.exception("元素属性值获取失败...") # 出错后截图 self.screen_shots(module) raise else: return attribute_text
def get_element_text(self, loc, module, timeout=20, poll_frequency=0.5): """ :param loc: 元素定位 :param module: 页面+页面操作行为 :param timeout: 超时时限 :param poll_frequency: 轮询时间 :return: 文本信息 """ # 1.等待元素可见 # 2.获取该元素 # 3.获取该元素文本信息 self.wait_element_visible(loc, module, timeout, poll_frequency) ele = self.get_element(loc, module, timeout, poll_frequency) # 有的元素有时候获取不到文本,等待一秒后获取 time.sleep(1) logger.info(f"{module}→→→获取元素文本信息:{loc}") try: text = ele.text except: logger.exception("元素文本信息获取失败...") # 出错后截图 self.screen_shots(module) raise else: return text
def get_element(self, loc, module, timeout=20, poll_frequency=0.5): """ :param loc: 元素定位 :param module: 页面+页面操作行为 :param timeout: 超时时限 :param poll_frequency: 轮询时间 :return: 元素 """ logger.info(f"{module}→→→开始获取元素:{loc}") try: ele = self.driver.find_element(*loc) except: logger.exception("元素获取失败...") # 出错后截图 self.screen_shots(module) raise else: return ele
def wait_element_invisibility(self, loc, module, timeout=20, poll_frequency=0.5): """ :param loc: 元素定位 :param module: 页面+页面操作行为 :param timeout: 超时时限 :param poll_frequency: 轮询时间 :return: 无 """ logger.info(f"判断元素是否不存在") try: WebDriverWait(self.driver, timeout, poll_frequency).until( EC.invisibility_of_element_located(loc)) except: logger.exception(f"{loc}元素存在") self.screen_shots(module) raise
def wait_element_presence(self, loc, module, timeout=20, poll_frequency=0.5): """ :param loc: 元素定位 :param module: 页面+页面操作行为 :param timeout: 超时时限 :param poll_frequency: 轮询时间 :return: 无 """ logger.info(f"等待元素{loc}存在...") try: WebDriverWait(self.driver, timeout, poll_frequency).until( EC.presence_of_element_located(loc)) except: logger.exception("等待元素存在失败...") # 出错后截图 self.screen_shots(module) raise
def screen_shots(self, module, path=do_path.screen_shots_path): """ :param module: 页面+页面操作行为 :param path: 图片保存路径 :return: 无 """ time = datetime.datetime.strftime(datetime.datetime.now(), "%Y%m%d%H%M%S") # 图片命名格式: 时间_页面_页面操作行为.png picture_name = f"{time}_{module}.png" # 图片绝对路径 file_path = path + "\\" + picture_name logger.info("...开始截图...") try: self.driver.save_screenshot(file_path) except: logger.exception("...截图失败...") raise else: logger.info(f"...截图成功...图片保存路径为:{file_path}")
def click_element(self, loc, module, timeout=20, poll_frequency=0.5): """ :param loc: 元素定位 :param module: 页面+页面操作行为 :param timeout: 超时时限 :param poll_frequency: 轮询时间 :return: 元素 """ # 1.等待元素可见 # 2.获取该元素 # 3.点击元素 self.wait_element_visible(loc, module, timeout, poll_frequency) ele = self.get_element(loc, module, timeout, poll_frequency) logger.info(f"{module}→→→开始点击元素:{loc}") try: ele.click() except: logger.exception("点击元素失败...") # 出错后截图 self.screen_shots(module) raise
def input_text(self, loc, module, text, timeout=20, poll_frequency=0.5): """ :param loc: 元素定位 :param module: 页面+页面操作行为 :param text: 输入的文本 :param timeout: 超时时限 :param poll_frequency: 轮询时间 :return: 无 """ # 1.等待元素可见 # 2.获取该元素 # 3.输入文本信息 self.wait_element_visible(loc, module, timeout, poll_frequency) ele = self.get_element(loc, module, timeout, poll_frequency) logger.info(f"{module}→→→开始输入文本信息:{text}") try: ele.send_keys(text) except: logger.exception("文本信息输入失败...") # 出错后截图 self.screen_shots(module) raise