一、Python+SeleniumPOM4-框架-封装日志和游览器引擎

 前置准备

configpraser 读取配置文件

[engintype]

#drivertype=firefox注意这里只能有一个键值对存在

drivertype=chrome

通过config = configpraser.ConfigPraser()

config.read(配置文件的路径)

config.get("engintype","drivertype")来读取信息


准备日志类

import logging
import os
import time
class Logger(object):
    #传入的logger名字
    def __init__(self,loggername):
        '''
        指定保存日志的文件路径,日志级别,以及调用的文件
        将日志存放在指定的文件中去
        :param logger:
        '''
        self.logger = logging.getLogger(loggername)
        self.logger.setLevel(logging.DEBUG) #设置日志的类型
        #创建一个时间戳,用于日志的保存
        timestamps = time.strftime("%Y%m%d%H%M%S",time.localtime(time.time()))

        #获取日志的保存的路径
        log_path = os.path.dirname(os.path.abspath("."))+"/logs/"
        # 如果case组织结构式 / testsuit / featuremodel / xxx.py , 那么得到的相对路径的父路径就是项目根目录
        log_name=log_path+timestamps+".log"
        #创建一个handler
        fh = logging.FileHandler(log_name)
        fh.setLevel(logging.INFO)
        #创建一个handler,用于控制台输出
        console_output = logging.StreamHandler()
        console_output.setLevel(logging.INFO)
        #定义输出的格式
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        fh.setFormatter(formatter)
        console_output.setFormatter(formatter)
        #给logger添加handler
        self.logger.addHandler(fh)
        self.logger.addHandler(console_output)
    def getlog(self):
        return self.logger

 准备引擎类

import configparser
import os.path
from selenium import webdriver
from framework.logger import Logger
#测试configparser的用法
# print(os.path.abspath("."))#获取当前的路劲
# config = configparser.ConfigParser()
# file_path = os.path.dirname(os.path.abspath('.')) + '\\config\\browser_engin.ini'
# config.read(file_path)
# print(config.get("browsertype","browserName"))
logger = Logger(loggername="BrowserEngine").getlog()
class BrowseEngin(object):

    dir = os.path.dirname(os.path.abspath(","))
    chrome_driver_path = dir+"/tools/chromedriver.exe"
    ie_driver_path = dir+"/tools/IEDriverServer.exe"

    def __init__(self,driver):
        self.driver = driver
    def open_browser(self,driver):
        config = configparser.ConfigParser()
        file_path = os.path.dirname(os.path.abspath('.')) + '/config/browser_engin.ini'
        config.read(file_path)
        browser = config.get("browsertype","browserName")
        logger.info("you had select %s browser" % browser)
        url = config.get("testServer","URL")
        logger.info("the test server url is %s"% url)


        if browser =="Firefox":
            driver = webdriver.Firefox()
            logger.info("start firefox browser")
        if browser == "Chrome":
            driver = webdriver.Chrome(self.chrome_driver_path)
            logger.info("start firefox browser")
        if browser =="IE":
            driver = webdriver.Ie(self.ie_driver_path)
            logger.info("start firefox browser")

        driver.get(url)
        logger.info("Open url: %s" % url)
        driver.maximize_window()
        logger.info("Maximize the current window.")
        driver.implicitly_wait(10)
        logger.info("Set implicitly wait 10 seconds.")
        return driver
def quit_browser(self):
        logger.info("Now ,close and quit the browser")
        self.driver.quit()

准备测试类验证改引擎是否可用

import unittest
from framework import brower_engin
import time
class BaiduSearch(unittest.TestCase):
    def setUp(self):
        browser = brower_engin.BrowseEngin(self)
        self.driver = browser.open_browser(self)
    def tearDown(self):
        self.driver.quit()
    def test_baidu_search(self):
        self.driver.find_element_by_id('kw').send_keys("selenium")
        time.sleep(1)
        self.assertEqual("selenium",self.driver.title,"fail")
if __name__=="__main__":
    unittest.main()



猜你喜欢

转载自blog.csdn.net/ying62506799/article/details/80766228