1. 程式人生 > >appium+python自動化50-生成定位對象模板templet(jinja2)

appium+python自動化50-生成定位對象模板templet(jinja2)

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:
        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.可以在裏面繼續輸入代碼,測試下是不是能正常調用成功

技術分享圖片

appium+python自動化50-生成定位對象模板templet(jinja2)