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()

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.可以在里面继续输入代码,测试下是不是能正常调用成功

原文发布于微信公众号 - 从零开始学自动化测试(yoyoketang)

原文发表时间:2018-05-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

使用fiddler模拟http请求

以前看见过,没发,现在又看见了,向大家推荐一下: 概述 与httpwath相比,fiddler能模拟http请求、能断点调试、http分析统计吸引了我,...

47550
来自专栏图像识别与深度学习

2018-03-24python3.6.2 Tensorflow环境配置(win10 64位)

18470
来自专栏Django中文社区

注册

用户注册就是创建用户对象,将用户的个人信息保存到数据库里。回顾一下 Django 的 MVT 经典开发流程,对用户注册功能来说,首先创建用户模型(M),这一步我...

50850
来自专栏JetpropelledSnake

Linux学习笔记之Linux启动级别

对于绝大多数Linux程序员来说,进入Linux系统后一般看到的是黑乎乎的界面(开发模式),因为系统如果启动选择开发模式,会减少启动时间,优化内存等。但是通常我...

13210
来自专栏Golang语言社区

Go语言如何并发超时处理详解

大家都知道golang并没有在语言层次上提供超时操作,但可以通过一些小技巧实现超时。下面来一起看看吧,有需要的朋友们可以参考借鉴。 实现原理: 并发一个函数,等...

37860
来自专栏Java帮帮-微信公众号-技术文章全总结

tomcat在eclipse中启动成功,主页却打不开

tomcat在eclipse中启动成功,主页却打不开 症状: tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8...

47680
来自专栏happyJared

小巧实用的HTTP代理抓包工具:mitmproxy

这步比较简单,直接pip install mitmproxy,或者自行下载安装包。更多更详细的安装说明可以查看这篇文章:MitmProxy的安装

20320
来自专栏云加头条

腾讯云存储最佳实践系列一:使用对象存储COS托管静态网站

在此实践中,用户可以在腾讯云对象存储(以下简称 COS)上托管静态网站,访客可以通过自定义域名(例如 www.example.com )访问托管的静态网站。无论...

93900
来自专栏Golang语言社区

Go语言如何并发超时处理详解

大家都知道golang并没有在语言层次上提供超时操作,但可以通过一些小技巧实现超时。下面来一起看看吧,有需要的朋友们可以参考借鉴。 实现原理: 并发一个函数,等...

396130
来自专栏从零开始学自动化测试

Fiddler抓包3-查看get与post请求

前言 前面两篇关于Fiddler抓包的一些基本配置,配置完之后就可以抓到我们想要的数据了,接下来就是如何去分析这些数据。 本篇以博客园的请求为例,简单分析get...

43060

扫码关注云+社区

领取腾讯云代金券