appium+python自動化50-生成定位對象模板templet(jinja2)
阿新 • • 發佈:2018-05-17
CA lock == mark 概念 都差不多 urn 選擇 https
每次自己寫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: iflocator[‘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)