• PO模式


    PO:page object,分层机制,让不同层去做不同类型的事情,让代码结构清晰,增加复用性。
    主要有以下几种分层方式:
    1)两层: 对象逻辑层+业务数据层
    2)三层:对象库层+逻辑层+业务数据层
    3)四层:对象库层+逻辑层+业务层+数据层

    优势:
    1)效率高 :同理,PO模式的逻辑层方法有具体定义,情况和元素发生变化一样 修改逻辑层,业务层不变。这样看来结构简单清晰,舒服更符合人类习惯, 普通方式就是继续堆case。
    2) 复用多收益大: 同样这里如果逻辑复用越多,PO模式收益越大,因为对于PO模式来说都只需要修改一个地方多处受益。

    普通模式:

    def test_user_login():
        driver = webdriver.Edge()
        base_url = 'https://mail.qq.com/'
        username = '3494xxxxx'  # qq号码
        password = 'kemixxxx'  # qq密码
        driver.get(base_url)
        driver.switch_to.frame('login_frame') #切换到登录窗口的iframe
        driver.find_element(By.ID, "u").send_keys(username) #输入账号
        driver.find_element(By.ID, "p").send_keys(password) #输入密码
        driver.find_element(By.ID, "login_button").click()  #点击登录
    

    PO模式(三层):
    对象库层

    #创建基础类
    class BasePage(object):
        #初始化
        def __init__(self, driver):
            self.base_url = 'https://mail.qq.com/'
            self.driver = driver
            self.timeout = 30
    
        #打开页面
        def _open(self):
            url = self.base_url
            self.driver.get(url)
            self.driver.switch_to.frame('login_frame')  #切换到登录窗口的iframe
    
        def open(self):
            self._open()
    
        #定位方法封装
        def find_element(self,*loc):
            return self.driver.find_element(*loc)
    
    #创建LoginPage类
    class LoginPage(BasePage):
        username_loc = (By.ID, "u")
        password_loc = (By.ID, "p")
        login_loc = (By.ID, "login_button")
    
        #输入用户名
        def type_username(self,username):
            self.find_element(*self.username_loc).send_keys(username)
    
        #输入密码
        def type_password(self,password):
            self.find_element(*self.password_loc).send_keys(password)
    
        #点击登录
        def type_login(self):
            self.find_element(*self.login_loc).click()
    

    逻辑层

    #创建test_user_login()函数
    def user_login(driver, username, password):
        """测试用户名/密码是否可以登录"""
        login_page = LoginPage(driver)
        login_page.open()
        login_page.type_username(username)
        login_page.type_password(password)
        login_page.type_login()
    

    业务层

    def test_user_login():
        driver = webdriver.Edge()
        username = '3494xxxxx'    #qq号码
        password = 'kemixxxx'    #qq密码
        test_user_login(driver, username, password)




    以上都是我日常工作的学习与总结,希望知识能积少成多,以后的我一定会感激现在努力的自己。。
  • 相关阅读:
    PDF,仅支持英译中,可以下载后的pdf或者word版
    pip指定源安装【自用】
    【jQuery01】jQuery选择器
    【jQuery00】什么是jQuery,为什么要学jQuery,配置jQuery环境,解决冲突,大致使用流程
    什么是召回率??
    编程学习路线
    堆排序
    二叉插入排序
    每天算法一丁点(4)--递归算法应用:分书问题
    每天算法一丁点(3)--递归算法应用:半数集
  • 原文地址:https://www.cnblogs.com/zaochajun/p/13528886.html
Copyright © 2020-2023  润新知