(Python)自動生成代碼(方法一)

在寫某個平臺的自動化腳本時,筆者把所有的操做都封裝到了兩個類中,page.py和commonpage.py:python

page.py部分代碼:
class BasePage(object):
    '''
    頁面基礎類
    '''
    def __init__(self, driver):
        self.driver = driver
        
    def find_element(self,loc):
        return self.driver.find_element(*loc)
    
    #在輸入框中輸入文字
    def input_text(self,loc,text):
        self.find_element(loc).send_keys(text)

commonpage.py部分代碼:
class CommonPage(BasePage): '''平臺通用的功能''' #################################### #點擊菜單 #big:第幾個大菜單 #small:第幾個小菜單 def click_menu(self,big): big_menu = (By.XPATH,"//ul/li[%s]/a/span"%big) self.click(big_menu) sleep(2) def click_small_menu(self,small,list): small_menu = (By.XPATH,"//ul/li[%s]/ul/li[2]"%small) self.click(small_menu) sleep(2)

頁面的操做只要調用這兩個類(大部分其實在調用commonpage類),幾乎能完成所有元素的封裝、簡化操做流程等。相似封裝頁面元素部分代碼:app

from pages.page import BasePage
from pages import commonpage,loginpage

#活動編輯-報名表界面
class act_applyPage(BasePage):
    
    #點擊菜單
    def goto_activity_page(self):
        loginpage.LoginPage(self.driver).login_sys(username="abcd", passwd="password")
        com_page = commonpage.CommonPage(self.driver)
        com_page.click_menu(2,1)
    
    #點擊某個tab
    def click_act_apply_tab(self):
        print u"點擊 act_apply_tab"
        compage = commonpage.CommonPage(self.driver)
        compage.click_tab(5)

能看出封裝頁面元素的代碼不少都是相似的,只是參數不一樣。這就引起了筆者的思考:「能不能快捷生成代碼?」學習

上網搜索資料,大多都是使用Templat類,研究後發現達不到筆者想要結果(也有可能筆者還沒掌握Templat類的使用,T-T)。spa

最近恰好總結了python處理配置文件的知識,想到能夠用在自動生成代碼這裏。code

大體思路是:section值可做爲類名,option值可做爲方法,在value中,用「,」隔開多個有用的參數,其中第一個參數是option的類型(這個類型決定用那一段代碼);blog

先遍歷sections,在每一個section下,遍歷{option:value}鍵,分析value中的類型,把對應的代碼寫到文件中。element

先來看看配置文件:get

#活動
#section
[activity,frmActivityEdit]
#{option:value}
start_part:start,活動編輯,
activity:menu,2,1
add_button:addbtn,4,

下面是生成腳本的部分代碼:input

import ConfigParser
import time

conf = ConfigParser.RawConfigParser()
#讀取配置文件 conf.read(
"section1.cfg") now = time.strftime("%Y-%m-%d",time.localtime(time.time())) sectionlist = conf.sections() #print sectionlist for list in sectionlist: (classname,frmedit) = list.split(',') #生成文件 pyfilepath = r'E:\\workspace\\%spage.py'%classname #寫文件 pyfile = open(pyfilepath,'w') #讀取每一個section,遍歷鍵,分析類型,寫入代碼 optionlist = conf.options(list) for list2 in optionlist:
#分解value (optiontype,ranking,selector)
= conf.get(list, list2).split(',')
#須要生成的腳本 menu_code
= '''\n\n def goto_%s_page(self): loginpage.LoginPage(self.driver).login_sys(username="abcd", passwd="password") com_page = commonpage.CommonPage(self.driver) com_page.click_menu(%s,%s)'''%(list2,ranking,selector)
#判斷類型,決定寫入哪些腳本
if optiontype == 'start': pyfile.writelines(start_code) elif optiontype == 'menu': pyfile.writelines(menu_code)
else:... pyfile.close()

接下來只要完善配置文件,大部分的界面類就能完成了。it

 持續學習中,,,

相關文章
相關標籤/搜索