def wait_element_clickable(self, locator, img_info, timeout=15, poll_frequency=0.5): """ 等待元素可点击 :param locator: 定位表达式 :param img_info: 错误截图文件名 :param timeout: 等待超时时间 :param poll_frequency: 等待轮询时间 :return: """ # 等待元素之前获取当前的时间 start_time = time.time() try: ele = WebDriverWait(self.driver, timeout, poll_frequency).until( EC.element_to_be_clickable(locator) ) except Exception as e: # 输出日志 log.error("元素--{}--等待可点击超时".format(img_info)) log.exception(e) # 对当前页面进行截图 self.save_scree_image(img_info) raise e else: # 元素等待出现之后,获取实际 end_time = time.time() log.info("元素--{}--可点击等待成功,等待时间{}秒".format(locator, end_time - start_time)) return ele
def test_login_pass(self, login_fixture): """正常登录的用例""" login_page,index_page = login_fixture # 进行登录的操作 login_page.login(conf.get('test_data', 'user'), conf.get('test_data', 'pwd')) # 获取登录之后的用户信息 res = index_page.get_my_user_info() # 断言用例执行是否通过 try: assert '登录成功' == res except AssertionError as e: log.error("用例执行失败") log.exception(e) raise e else: log.info("用例执行通过")
def click_element(self, locator, img_info): """ 点击元素 :param locator: 元素定位表达式 :param img_info: 错误截图信息 :return: """ try: self.driver.find_element(*locator).click() except Exception as e: # 输出日志 log.error("点击元素--{}--失败".format(img_info)) log.exception(e) # 对当前页面进行截图 self.save_scree_image(img_info) raise e else: log.info("元素--{}--点击成功".format(locator))
def get_element_text(self, locator, img_info): """ 获取元素的文本 :param locator: 元素定位表达式 :param img_info: 错误截图信息 :return: """ try: text = self.driver.find_element(*locator).text except Exception as e: # 输出日志 log.error("元素--{}--获取文本失败".format(img_info)) log.exception(e) # 对当前页面进行截图 self.save_scree_image(img_info) raise e else: log.info("元素--{}--获取文本成功".format(locator)) return text
def get_element_attribute(self, locator, attr_name, img_info): """ 获取元素的文本" :param locator: 元素定位表达式 :param attr_name: 属性名字 :param img_info: 错误截图信息 :return: """ try: ele = self.driver.find_element(*locator) attr_value = ele.get_attribute(attr_name) except Exception as e: # 输出日志 log.error("获取元素--{}--属性失败".format(img_info)) log.exception(e) # 对当前页面进行截图 self.save_scree_image(img_info) raise e else: log.info("获取元素--{}--属性成功".format(locator)) return attr_value
def input_text(self, locator, text_value, img_info): """ 文本内容输入 :param locator: 元素定位表达式 :param text_value: 输入的文本内容 :param img_info: 错误截图信息 :return: """ try: self.driver.find_element(*locator).send_keys(text_value) except Exception as e: # 输出日志 log.error("输入文本--{}--失败".format(img_info)) log.exception(e) # 对当前页面进行截图 start_time = time.strftime("%Y%m%d %X", time.localtime()) filename = '{}_{}.png'.format(img_info, start_time) file_path = os.path.join(ERROR_IMG, filename) self.driver.save_screenshot(file_path) log.info("错误页面截图成功,图表保存的路径:{}".format(file_path)) raise e else: log.info("文本内容输入--{}--成功".format(locator))