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
appium+python自动化50-生成定位对象模板templet(jinja2)的更多相关文章
- Appium+python自动化4-元素定位uiautomatorviewer
前言 环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作. uiautomatorviewer是androi ...
- Appium+python自动化12-appium元素定位
前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性
- appium+python自动化49-yaml管理定位元素
前言 如何高效管理定位元素,这个是很有学问的问题,也是面试必问的[以下纯属个人观点,勿喷!]. 有的人用xml管理页面定位元素,这种逼格略高,但是小编认为学习成本大,贼麻烦. 有的人提到用excel管 ...
- Appium+python自动化12-appium元素定位【转载】
前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性
- Appium+python自动化4-元素定位uiautomatorviewer【转载】
前言 环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作. uiautomatorviewer是androi ...
- Appium+python自动化
名称 链接地址 Appium+python自动化8-Appium Python API(上) http://mp.weixin.qq.com/s/WvpT5oRrYY22avI95FuypQ Appi ...
- Appium+python自动化8-Appium Python API
Appium+python自动化8-AppiumPython API 前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts conte ...
- appium+python自动化52-多点触控MultiAction
前言 MultiAction是针对多点触控操作的,是TouchAction的一个补充模块 TouchAction用法参考前面的一篇:appium+python自动化33-TouchAction 多点触 ...
- Appium+python自动化20-查看iOS上app元素属性
前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道,appium的windows版自带的Inspector可以定位app上的元素 Mac版的appium1.6的 ...
随机推荐
- UNIX shell 学习笔记 一 : 几个shell的规则语法对比
1. 查看系统有哪些可用的shell cat /etc/shell 2. 每种shell都有一个特殊内置变量来存上一条命令的退出状态,例: C/TC shell $status % cp fx fy ...
- tinyhttpd ------ C 语言实现最简单的 HTTP 服务器
工作流程: 1>服务器启动,在指定端口或随机选取端口绑定httpd服务. 2>收到一个http请求时(其实就是listen端口accept的时候),派生一个线程运行accept_reque ...
- review的一个收获popstate,addEventListener:false ,split,jquery cache
一.popstate:记录url历史变化 二.document.location.hash:锚点后面的东西 三.addEventListener:false 是否在捕获或者冒泡事件中执行 强转换 四. ...
- IEDA自动清除无用的import
Before After Step 快捷键展示格式化对话框:ctrl + shift + alt + l 格式化快捷键:ctrl + alt + l <wiz_tmp_tag id= ...
- C# 导入Excel
#region 导入 /// <summary> /// 导入 /// </summary> /// <param name="sender"> ...
- JQuery 实现 锚点跳转
$('.nav-jump').click(function() { $('html,body').animate( { scrollTop:$($.attr(this, 'href')).offset ...
- 寻找与网页内容相关的图片(三)网易新闻与qq空间的做法
寻找与网页相关的图片现在看来无非有两种方式,第一种是网页自己指定,第二种是通过算法推断. 对于网站的内容提供者来说,他自己知道相关的图片在哪,正如前文所述可以在HTML的头部加上META标签,也可以像 ...
- AC日记——【模板】Link Cut Tree 洛谷 P3690
[模板]Link Cut Tree 思路: LCT模板: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 30 ...
- Ubuntu 虚拟机增强包下载
https://www.virtualbox.org/wiki/Download_Old_Builds_5_1 Extension Pack All Platforms 安装方法详情:https:// ...
- 【C#】构建可枚举类型(IEnumerable和IEnumerator)
为了开始对实现既有接口的了解,我们就看一下IEnumerable和IEnumerator的作用,想一下,C#支持关键字foreach,允许我们遍历任何数组类型的内容: //遍历数组的项 ,,} for ...