python代码⾃动⽣成_(Python)⾃动⽣成代码(⽅法⼀)在写某个平台的⾃动化脚本时,笔者把全部的操作都封装到了两个类中,page.py和commonpage.py:
page.py部分代码:classBasePage(object):'''页⾯基础类'''
def __init__(self, driver):self.driver=driverdeffind_element(self,loc):return self.driver.find_element(*loc)#在输⼊框中输⼊⽂字
definput_text(self,loc,text):
self.find_element(loc).send_keys(text)
commonpage.py部分代码:classCommonPage(BasePage):'''平台通⽤的功能'''
>>>>>>>#
#点击菜单
#big:第⼏个⼤菜单
#small:第⼏个⼩菜单
defclick_menu(self,big):
big_menu= (By.XPATH,"//ul/li[%s]/a/span"%big)
self.click(big_menu)
sleep(2)defclick_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 importBasePagefrom pages importcommonpage,loginpage#活动编辑-报名表界⾯
classact_applyPage(BasePage):#点击菜单
defgoto_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
defclick_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,活动编辑,
writelines方法的参数可以是
activity:menu,2,1add_button:addbtn,4,
下⾯是⽣成脚本的部分代码:
importConfigParserimporttime
conf=ConfigParser.RawConfigParser()
#读取配置⽂件
now= time.strftime("%Y-%m-%d",time.localtime(time.time()))
sectionlist=conf.sections()#print sectionlist
for list insectionlist:
(classname,frmedit)= list.split(',')#⽣成⽂件
pyfilepath = r'E:\\workspace\\%spage.py'%classname#写⽂件
pyfile = open(pyfilepath,'w')#读取每个section,遍历键,分析类型,写⼊代码
optionlist =conf.options(list)for list2 inoptionlist:
#分解value
(optiontype,ranking,selector)= (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()
接下来只要完善配置⽂件,⼤部分的界⾯类就能完成了。
持续学习中,,,

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论