Ejemplo n.º 1
0
class AppEngine():
    def __init__(self):
        # 创建日志实例
        self.mylog = Logger(logger='appEngine').getlog()
        # 读取配置文件中的启动appium需要的参数
        conf = MyConfig()
        # 读取ini文件
        filePath = os.path.dirname(os.path.dirname(__file__))
        conf.read(filePath + '\\config\\config.ini', encoding='utf-8')
        self.mylog.info("读取文件../config/config.ini")
        # 获取选择的section的名字
        sel = conf.get('select', 'app')
        self.mylog.info("选择的手机参数为{}下的值".format(sel))
        # 获取上面获取的section下的所有options的值
        self.options = conf.items(sel)
        self.url = 'http://localhost:{}/wd/hub'.format(
            conf.get('appium', 'port'))
        self.mylog.info("链接appium的地址为:{}".format(self.url))

    # 开启app
    def open_app(self):
        # 转换成caps
        caps = {}
        for i in self.options:
            caps[i[0]] = i[1]
        try:
            self.driver = webdriver.Remote(self.url, caps)
            self.mylog.info("与appium链接成功")
            return self.driver
        except exceptions.MaxRetryError:
            self.mylog.error("请求多次appium失败,查看服务是否有问题")
        except Exception as e:
            self.mylog.error("报错信息:{}".format(e))

    # 关闭app
    def quit_app(self):
        self.driver.quit()
Ejemplo n.º 2
0
# import HtmlTestRunner
from framework import HTMLTestRunner
import os
import unittest
import time
from framework.logger import Logger

# create a logger instance
logger = Logger(logger="BasePage").getlog()

report_path = os.path.dirname(
    os.path.abspath('')) + '/automation_framework_demo-master/test_report/'

now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))

HtmlFile = report_path + now + "HTMLReport.html"
try:
    fp = open(HtmlFile, "w+")
except FileNotFoundError as e:
    logger.error("File not found error  : " + e)

# Testsuite
suite = unittest.TestLoader().discover("")

if __name__ == '__main__':
    # with open(HtmlFile, 'w+') as fp:
    # HTMLTestRunner
    runner = HTMLTestRunner.HTMLTestRunner(
        stream=fp, title=u"Test Suit", description=u"Test Suite HTML Report")
    runner.run(suite)
Ejemplo n.º 3
0
class BasePage(object):
    def __init__(self, driver):
        self.driver = driver
        self.logger = Logger(self.__class__.__name__).getLogger()

    def get(self, url):
        try:
            self.driver.get(url)
            self.logger.info('open url:{0}'.format(url))
        except Exception as e:
            self.logger.error('open url:{0} failed'.format(url))

    def get_window_img(self):
        imgpath = config.get("img", "imgPath")
        imgName = imgpath + rq + '.png'
        try:
            self.driver.get_screenshot_as_file(imgName)
            self.logger.info('save screenshot succeed')
        except Exception as e:
            self.logger.error('save screenshot failed {0}'.format(e))

    def find_element(self, locator):
        #切割传入的字符串分离出查找类型和表达式
        el = ''
        if '=>' not in locator:
            raise ValueError('locator must split by =>')
        locator_by_str = locator.split('=>')[0]
        locator_value = locator.split('=>')[1]
        locator_by = eval(
            "self.driver.find_element_by_{0}".format(locator_by_str))
        try:
            el = locator_by(locator_value)
            self.logger.info('find element {0}:{1}'.format(
                locator_by_str, locator_value))
        except NoSuchElementException:
            self.logger.error('no such element {0}:{1}'.format(
                locator_by_str, locator_value))
            self.get_window_img()
        except AttributeError as e:
            self.logger.error('incorrect locator type')
        return el

    def type(self, locator, text):
        el = self.find_element(locator)
        # el.clear()
        try:
            el.send_keys(text)
            self.logger.info('input value:{0}'.format(text))
        except Exception as e:
            self.logger.error('input value:{0} failed'.format(text))
            self.get_window_img()

    def click(self, locator):
        el = self.find_element(locator)
        try:
            el.click()
            self.logger.info('click element:{0}'.format(locator))
        except Exception as e:
            self.logger.error('click element:{0} failed'.format(locator))

    def refresh(self):
        self.driver.refresh()
        self.logger.info('page refresh')

    def get_page_title(self):
        self.logger.info('current page title is {0}'.format(self.driver.title))
        return self.driver.title