標籤: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 toolspages = 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 toolspages = tools.parseyaml()def get_locater(clazz_name, method_name): locators = pages[clazz_name][‘locators‘] for locator in locators: if locator[‘name‘] == method_name: return locatorclass 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)