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


在寫某個平台的自動化腳本時,筆者把全部的操作都封裝到了兩個類中,page.py和commonpage.py:

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類),幾乎能完成全部元素的封裝、簡化操作流程等。類似封裝頁面元素部分代碼:

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)。

最近剛好總結了python處理配置文件的知識,想到可以用在自動生成代碼這里。

大致思路是:section值可作為類名,option值可作為方法,在value中,用“,”隔開多個有用的參數,其中第一個參數是option的類型(這個類型決定用那一段代碼);

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

先來看看配置文件:

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

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

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()

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

 持續學習中,,,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM