def open_browser(browser_type):
    try:
        if browser_type == 'Chrome':
            Logger().get_logger().info('Chrome浏览器启动中......')
            driver = webdriver.Chrome(options=Options().conf_option())

        else:
            Logger().get_logger().info('{0}浏览器启动中......'.format(browser_type))
            driver = getattr(webdriver, browser_type)()

    except Exception as e:
        Logger().get_logger().info('出现异常,启动Chrome浏览器,Exception信息:{0}'.format(e))
        driver = webdriver.Chrome()
    return driver
 def assert_text(self, **kwargs):
     reality = self.locator(**kwargs).text
     try:
         assert reality == kwargs['expect']
         return True
     except:
         Logger().get_logger().info('断言失败,断言信息:{0} != {1}'.format(reality, kwargs['expect']))
         return False
Ejemplo n.º 3
0
class ExcelConf:
    # 创建日志对象
    log = Logger().get_logger()

    # 定义Excel格式
    def cell_write(self, value, sheet, row):
        bold = Font(bold=True)
        if value == 'pass':
            fill = PatternFill('solid', fgColor='AACF91')
        elif value == 'false':
            fill = PatternFill('solid', fgColor='FF0000')
        else:
            pass
        sheet.cell(row=row, column=8).value = value.upper()
        sheet.cell(row=row, column=8).fill = fill
        sheet.cell(row=row, column=8).font = bold

    # 读取配置文件中的信息,获取excel路径,基于yaml获取文件
    def load_yaml(self, yaml_path):
        file = open(yaml_path, 'r', encoding='utf-8')
        file_data = yaml.load(file, Loader=yaml.FullLoader)
        return file_data

    # openpyxl打开excel用例
    def load_excel(self, excel_path):
        # 读取excel内容
        excel = openpyxl.load_workbook(excel_path)
        return excel

    # 获取excel的所有sheet
    def get_sheets(self, excel):
        sheets = excel.sheetnames
        return sheets

    # 关闭excel文件,释放资源
    def close(self, excel):
        excel.close()

    # excel保存
    def save_excel(self, excel, path):
        excel.save(path)
Ejemplo n.º 4
0
class BasePage:
    url = 'http://39.98.138.157/shopxo/index.php'
    log = Logger().get_logger()

    # driver=webdriver.Chrome()
    def __init__(self, driver):
        self.driver = driver
        self.driver.implicitly_wait(2)

    # 访问url
    def open(self):
        self.driver.get(self.url)
        self.log.info('访问url:{}'.format(self.url))

    # 元素定位
    def locator(self, loc):
        self.log.info('正在使用:{}定位,其定位元素为:{}'.format(loc[0], loc[1]))
        return self.driver.find_element(*loc)

    # 输入
    def input_(self, loc, txt):
        self.locator(loc).send_keys(txt)
        self.log.info('正在输入:{}'.format(txt))

    # 点击
    def click(self, loc):
        self.locator(loc).click()

    # 切换至Iframe窗体
    def switch_to_iframe(self, loc):
        self.driver.switch_to.frame(self.locator(*loc))

    # 获取属性
    def get_attr(self, loc, name):
        self.locator(loc).get_attribute(name)

    # 获取文本
    def assert_text(self, loc):
        return self.locator(loc).text
Ejemplo n.º 5
0
#coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import poplib
import re
from email.parser import Parser
from logs.log import Logger
Log = Logger(__file__)


class MailServer(object):
    def __init__(self, user, pw, host, port=110):
        self.user = user
        self.pw = pw
        self.host = host
        self.port = port
        self.server = None
        self.conn = self.mail_recv()

    def mail_recv(self):
        """port: 110 standard port, 995 SSL port"""
        if self.port not in (110, 995):
            Log.error('POP port param should be in (110, 995)')
            return False
        self.server = poplib.POP3(self.host, self.port) if self.port == 110 \
            else poplib.POP3_SSL(self.host, self.port)
        try:
            self.server.user(self.user)
            self.server.pass_(self.pw)
            Log.info('<mail recv> Mail server connected!')
class WebUI_Framework(object):
    # 创建日志对象
    log = Logger().get_logger()

    # 初始化WebUI_Init类
    def __init__(self, browser_type):
        self.driver = open_browser(browser_type)

    def visit(self, **kwargs):
        self.driver.get(kwargs['txt'])

    # 关闭浏览器
    def quit(self, **kwargs):
        self.driver.quit()

    # 依据不同的定位方法,进行定位操作
    def locator(self, **kwargs):
        try:
            return self.driver.find_element(getattr(By, kwargs['loc'].upper()), kwargs['value'])
        except Exception as e:
            print('元素定位失败,信息:{0}'.format(e))

    # 依据不同的定位方法,进行点击操作
    def click(self, **kwargs):
        self.locator(**kwargs).click()

    # 依据不同的定位方法,进行输入操作
    def input(self, **kwargs):
        self.locator(**kwargs).send_keys(kwargs['txt'])

    # 定义强制等待
    def sleep(self, **kwargs):
        time.sleep(kwargs['txt'])

    # 定义隐式等待
    def wait(self, **kwargs):
        self.driver.implicitly_wait(kwargs['txt'])

    # 切换至新窗体
    def switch_to_new_current(self, **kwargs):
        handles = self.driver.window_handles
        self.driver.switch_to.window(handles[1])

    # 关闭旧窗体
    def close_old_current(self, **kwargs):
        self.driver.close()

    # 切换至旧窗体
    def switch_to_old_current(self, **kwargs):
        handles = self.driver.window_handles
        self.driver.switch_to.window(handles[0])

    # 切换至新窗体,并关闭旧窗体
    def switch_and_close(self, **kwargs):
        handles = self.driver.window_handles
        self.driver.close()
        self.driver.switch_to.window(handles[1])

    # 切换至Iframe窗体
    def switch_to_iframe(self, **kwargs):
        self.driver.switch_to.frame(self.locator(**kwargs))

    # 切换回默认窗体
    def switch_to_default(self, **kwargs):
        self.driver.switch_to.default_content()

    # 文本断言
    def assert_text(self, **kwargs):
        reality = self.locator(**kwargs).text
        try:
            assert reality == kwargs['expect']
            return True
        except:
            Logger().get_logger().info('断言失败,断言信息:{0} != {1}'.format(reality, kwargs['expect']))
            return False
Ejemplo n.º 7
0
import sys, os
reload(sys)
sys.setdefaultencoding('utf-8')
import zipfile
from selenium import webdriver
# from selenium.webdriver.common.proxy import *
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
from logs.log import Logger
import browser as bo
from util import *
Log = Logger(__name__)


class Initial_browser(object):
    def __init__(self, bs_conf_obj):
        self.conf = bs_conf_obj

    def set_chrome(self):
        options = webdriver.ChromeOptions()
        # options.add_extension(os.path.join(os.getcwd(), 'chromeExtentions', 'WebRTC Network Limiter_0_2_1_3.crx'))
        options.add_extension(os.path.join(os.getcwd(), 'chromeExtentions', 'WebRTC Control.crx'))
        options.add_extension(os.path.join(os.getcwd(), 'chromeExtentions', 'CanvasFingerprintBlock_1_5.crx'))
        options.add_experimental_option("excludeSwitches", ["ignore-certificate-errors"])
        if not os.path.exists(self.conf.execute_path):
            raise Exception('Please set chromedriver path, or add it into environ path')
        if self.conf.proxy:
Ejemplo n.º 8
0
# -*- coding:utf-8 -*-

import unittest
from pageObjects.Department_manage import DepartmentPage
from frameWork.browser_engine import BrowserEngine
import time
from logs.log import Logger

DEPARTMENT_NAME = '自动化测试部门66'
logger = Logger(logger_name='TestDepartmentManage').get_logger()


class TestDepartmentManage(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        """
        测试固件的setUp()的代码,主要是测试的前提准备工作
        :return:
        """
        browse = BrowserEngine(cls)
        cls.driver = browse.open_browser(cls)

    # @classmethod
    # def tearDownClass(cls):
    #     """
    #     测试结束后的操作,这里基本上都是关闭浏览器
    #     :return:
    #     """
    #     cls.driver.quit()
Ejemplo n.º 9
0
# -*- coding:utf-8 -*-

from selenium import webdriver
import time
from data.config import Config, DATA_PATH
from logs.log import Logger

logger = Logger('BrowserEngine').get_logger()


class BrowserEngine(object):

    Firefox_path = Config().get('Firefox_path')
    IE_path = Config().get('IE_path')
    chrome_path = Config().get('chrome_path')
    URL = Config().get('url', index=0)
    user_name = Config().get('login_name')
    password = Config().get('login_password')
    yaml = DATA_PATH + '/config.yaml'

    def __init__(self, driver):
        self.driver = driver

    def open_browser(self, driver):

        # 根据browser的值调用对应浏览器的驱动器,并在日志中输出步骤
        browser = Config().get('browser')
        if browser == "Firefox":
            driver = webdriver.Firefox(self.Firefox_path)
            time.sleep(2)
            logger.info("starting FireFox browser....")
Ejemplo n.º 10
0
class ExcelExcutor(object):
    '''
        实例化对象
        结合参数调用关键字
        封装整合
    '''
    # 创建日志对象
    log = Logger().get_logger()
    ec = ExcelConf()
    excel_path = ''
    excel = ''

    def excute_get_sheets(self, excel_path_value):
        global excel_path
        global excel
        excel_path = excel_path_value
        excel = self.ec.load_excel(excel_path)
        sheets = self.ec.get_sheets(excel)
        return sheets

    # Excel执行读写操作
    def excute_web(self, excel_path_value):
        sheets = self.excute_get_sheets(excel_path_value)
        try:
            # 读取所有Sheet页面
            for sheet in sheets:
                self.log.info('获取{0}内容成功,现在开始执行自动化测试......'.format(sheet))
                sheet1 = excel[sheet]
                # 基于Sheet内容,运行测试用例
                for value in sheet1.values:
                    param = {}
                    param['loc'] = value[2]
                    param['value'] = value[3]
                    param['txt'] = value[4]
                    param['expect'] = value[6]
                    # 判断文件,从用例内容开始执行
                    if type(value[0]) is int:
                        # 判断关键字列,如果是open_browser,则实例化对象,如果不是,则进行其他元素操作
                        if value[1] == 'open_browser':
                            self.log.info('现在执行关键字:{0},操作描述:{1}'.format(value[1], value[5]))
                            wf = WebUI_Framework(param['txt'])
                        # 判断是否为断言,若是断言则添加写入操作
                        elif 'assert' in value[1]:
                            self.log.info('现在执行关键字:{0},操作描述:{1}'.format(value[1], value[5]))
                            status = getattr(wf, value[1])(**param)
                            row = value[0] + 1
                            if status is True:
                                self.log.info('流程测试通过!')
                                self.ec.cell_write('pass', sheet1, row)
                            else:
                                self.log.info('流程测试失败!')
                                self.ec.cell_write('false', sheet1, row)
                            self.ec.save_excel(excel, excel_path)
                        # 定义常规关键字调用
                        else:
                            self.log.info('现在执行关键字:{0},操作描述:{1}'.format(value[1], value[5]))
                            getattr(wf, value[1])(**param)
                    else:
                        pass
        except Exception as e:
            self.log.exception('运行出现异常,信息描述:{0}'.format(e))
        finally:
            # 关闭读取的文件
            self.log.info("文件读取完毕,自动化执行结束!\n")
            self.ec.close(excel)
Ejemplo n.º 11
0
#coding=utf-8
import os
import unittest
from testCase import getpathInfo
from testCase import readConfig
import common.HTMLTestRunner as HTMLTestRunner   #生成报告
import pythoncom
from conf.configEmail import send_email    #发送邮件
from logs.log import Logger     #打印log

path = getpathInfo.get_Path()
report_path = os.path.join(path,'result')
on_off = readConfig.ReadConfig().get_email('on_off')
log = Logger().get_logger()

class ALLTest():
    #初始化一些参数和数据
    def __init__(self):
        #全局参数
        global resultPath
        resultPath = os.path.join("D:/InterfaceTest/result/","report.html")
        self.caseListFile = os.path.join("D:/InterfaceTest/testFile/","caselist.txt")
        self.caseFile = path
        self.caseList = []

        log.debug('debug mesage')
        log.info('info message')
        log.warning("this is a waring log")
        log.error('error message')
        log.info(str.format("%s %s","resultPath",resultPath))
Ejemplo n.º 12
0
# __author__ = 'Yang'
# -*- coding:utf-8 -*-

from selenium.webdriver.support.wait import WebDriverWait
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
import time
from logs.log import Logger

logger = Logger(logger_name='BasePage').get_logger()


class BasePage(object):
    """
        封装一个页面基类,让所有页面继承这个基类
    """

    # 初始化driver
    def __init__(self, driver):
        self.driver = driver
        self.wait = WebDriverWait(self.driver, 10, 0.5)

    def clear_cookies(self):
        """
        清除驱动初始化后的所有cookies
        """
        self.driver.delete_all_cookies()
        logger.info('clear cookies!!')