zoukankan      html  css  js  c++  java
  • appium+python自动化50-生成定位对象模板templet(jinja2)

    前言

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

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

    jinja2简介

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

    jinja2是Flask作者开发的一个模板系统,起初是仿django模板的一个模板引擎,为Flask提供模板支持,由于其灵活,快速和安全等优点被广泛使用。

    • 相对于Template,jinja2更加灵活,它提供了控制结构,表达式和继承等。
    • 相对于Mako,jinja2仅有控制结构,不允许在模板中编写太多的业务逻辑。
    • 相对于Django模板,jinja2性能更好。
    • Jinja2模板的可读性很棒。

    2.pip安装jinja2

    pip install jinja2

    3.在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()
    
    # 上海-悠悠 QQ交流群:330467341
    
    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.可以在里面继续输入代码,测试下是不是能正常调用成功

    上海-悠悠 QQ交流群:330467341

  • 相关阅读:
    TCP/IP(四)网络层
    TCP/IP(二)物理层详解
    TCP/IP(一)之开启计算机网络之路
    TCP/IP中你不得不知的十大秘密
    ASP .NET Core 基本知识点示例 目录
    微服务 + Docker + Kubernetes 入门实践 目录
    ASP.NET Core 中的实时框架 SingalR
    ASP.NET Core WebAPI中使用JWT Bearer认证和授权
    .NET Core 中的通用主机和后台服务
    EF Core 实现多租户
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/9047821.html
Copyright © 2011-2022 走看看