def tearDownClass(cls): """ 在测试类执行完毕后,关掉浏览器进程 :return: """ logger.info("==========测试用例执行之前,tearDownClass,整个测试类只执行一次==========") logger.info( "====********************************======TestCase End分隔符======**************************====" ) cls.driver.quit()
def test_ata(self, item): data = {'hawbNo': item['hawb']} print(data) result = requests.post(config_data['Server']['search_url'], data=data, verify=False) detail_info = json.loads(result.text) ata = detail_info['data']['ata'] logger.info("===============从接口中查询得到的ata为{}=============".format(ata)) sql = "select DATE_FORMAT(ata,'%b %d, %Y %I:%i %p') from t_shipment_house where house_no='LAXTS01677';" ata_sql_result = self.db.select_data(sql)[0] logger.info("===============从数据库中查询得到的ata为{}=============".format(ata)) self.assertEqual(ata, ata_sql_result)
def click_element(self, locator, exp): """点击元素 点击元素的前提是定位元素,先定位元素再点击元素 """ ele = self.get_element(locator, exp='') logger.info("{0}点击元素:{1}".format(exp, locator)) # 元素操作 try: ele.click() except BaseException as e: self.save_screenshot(exp) logger.exception(e) raise e
def get_element(self, locator, exp=''): """ 元素获取 在参数中使用args,在函数中使用*args,会将args进行解包,比如如果args为(By.ID, 'searchInput'),那么使用*args就会将元组解包,脱掉外衣 """ logger.info("查找元素:{}".format(locator)) try: self.driver.find_element(*locator) return self.driver.find_element(*locator) except BaseException as e: self.save_screenshot(exp) logger.exception(e) raise e
def save_screenshot(self, name): """截图操作 图片名称:模块名_页面名称_操作名称_年-月-日_时分秒.png,将截图路径配置到配置文件中 todo: 优化截图配置文件写法 """ file_name = screen_shot_dir + '/' + "{0} {1}.png".format( name, time.strftime('%Y-%m-%d_%H_%M_%S', time.localtime())) try: self.driver.save_screenshot(file_name) logger.info("截取网页成功,截取文件路径为{}".format(file_name)) except BaseException as e: logger.excption("截图失败,失败原因为{}".format(e)) raise e
def setUpClass(cls): """ 类方法需要在方法前面加上@classmethod装饰器说明,要不然会报错 可以实现功能如下: 通过excel读取本功能中需要的所有的测试数据 :return: """ logger.info( "====**********************======TestCase Begin分隔符======*********************************====" ) logger.info("==========测试用例执行之前,setUpClass,整个测试类只执行一次==========") cls.driver = driver cls.driver.get(config_data['Server']['base_url']) cls.index_page = IndexPage(cls.driver)
def wait_elePresent(self, locator, time=30, poll_frequency=0.5, exp=""): """ 等待元素页面呈现 :param locator:元素定位器 :param time:等待总周期 :param poll_frequency:检查频率,没0.5s检查一次 :param exp:文档说明,方便记录 :return: """ logger.info("等待元素{}可见".format(locator)) try: start = datetime.datetime.now() WebDriverWait(self.driver, time, poll_frequency).until( EC.presence_of_element_located(locator)) end = datetime.datetime.now() during_period = end - start logger.info("等待时长为:{}".format(during_period)) except BaseException as e: # logger.info("The exception is {}".format(e)) logger.exception(e) self.save_screenshot(exp) raise e
def setUpClass(cls): logger.info( "===============使用接口做自动化测试的前提是页面展示数据和接口提供的数据核对无误为前提=================" )