zoukankan      html  css  js  c++  java
  • (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
    = ''' 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()

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

     持续学习中,,,

  • 相关阅读:
    6. svg学习笔记-路径
    5. svg学习笔记-坐标系变换
    4. svg学习笔记-文档结构元素和样式的使用
    2. svg学习笔记-svg中的坐标系统和viewbox
    3. svg学习笔记-基本形状和画笔属性
    多项式:从门都没入到刚迈过门槛
    排列组合与二项式基础
    单调队列入门
    多项式:从什么都不知道到门都没入
    动态规划之四边形不等式优化
  • 原文地址:https://www.cnblogs.com/susan-su/p/8869399.html
Copyright © 2011-2022 走看看