(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 BasePagefrom 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,1add_button:addbtn,4,

下面是生成脚本的部分代码:

import ConfigParserimport timeconf = ConfigParser.RawConfigParser()#读取配置文件conf.read('section1.cfg')now = time.strftime('%Y-%m-%d',time.localtime(time.time()))sectionlist = conf.sections()#print sectionlistfor 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()

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

持续学习中,,,

(0)

相关推荐