码迷,mamicode.com
首页 > 移动开发 > 详细

appium+python自动化50-生成定位对象模板templet(jinja2)

时间:2018-05-17 11:33:57      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:utf-8   动态   end   图片   需要   表示   tools   uri   官方文档   

每次自己写pageobject定位元素对象太繁琐,格式都差不多,只是换个定位方法,这种就可以才有模板的方式,批量生成pageobject定位元素对象的模板
python里面生成模板有两个模块可以选择:templet和mako
简单来说,本篇实现的目的是用代码去自动生成代码,做到代码自动化

接着上一篇讲:appium+python自动化49-yaml管理定位元素

jinja2简介

1.jinja2官方文档:官方文档

要了解jinja2,那么需要先理解模板的概念。模板在Python的web开发中广泛使用,它能够有效的将业务逻辑和页面逻辑分开,使代码可读性增强、并且更加容易理解和维护。
模板简单来说就是一个其中包涵占位变量表示动态的部分的文件,模板文件在经过动态赋值后,返回给用户。
--> 可以理解为渲染

2.pip安装jinja2

pip install jinja2

技术分享图片

templetpage模板

1.新建一个templetpage,不用弄后缀,目录格式如下

技术分享图片

2.打开文件在里面写入以下模板

# -*- coding: utf-8 -*-
from page import tools
pages = tools.parseyaml()
def get_locater(clazz_name, method_name):
    locators = pages[clazz_name][locators]
    for locator in locators:
        if locator[name] == method_name:
            return locator
{% for page, locators in page_list.items() %}
class {{page}}:{% for locator in locators %}
    {{locator}} = get_locater({{page}}, {{locator}}){% endfor %}
    {% endfor %}

提取yaml数据

技术分享图片

生成pages.py文件

技术分享图片

实现效果

1.运行tools.py脚本会自动在当前脚本目录生成一个pages.py文件,如下

# -*- coding: utf-8 -*-

from page import tools

pages = tools.parseyaml()


def get_locater(clazz_name, method_name):
    locators = pages[clazz_name][locators]
    for locator in locators:
        if locator[name] == method_name:
            return locator


class HomePage:
    城市选择 = get_locater(HomePage, 城市选择)
    首页搜索 = get_locater(HomePage, 首页搜索)

    
class LoginPage:
    微信登录 = get_locater(LoginPage, 微信登录)
    手机号登录 = get_locater(LoginPage, 手机号登录)
    其它登录 = get_locater(LoginPage, 其它登录)
    QQ = get_locater(LoginPage, QQ)
    微博 = get_locater(LoginPage, 微博)
    账号密码 = get_locater(LoginPage, 账号密码)
    输入账号 = get_locater(LoginPage, 输入账号)
    输入密码 = get_locater(LoginPage, 输入密码)
    登录按钮 = get_locater(LoginPage, 登录按钮)

    
class MyPage:
    我的 = get_locater(MyPage, 我的)
    请点击登录 = get_locater(MyPage, 请点击登录)

2.可以在里面继续输入代码,测试下是不是能正常调用成功

技术分享图片

 
 

appium+python自动化50-生成定位对象模板templet(jinja2)

标签:utf-8   动态   end   图片   需要   表示   tools   uri   官方文档   

原文地址:https://www.cnblogs.com/jason89/p/9048923.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!