美文网首页
PO设计模式详解

PO设计模式详解

作者: 0981b16f19c7 | 来源:发表于2019-08-02 16:50 被阅读0次

PO:page objece,分层机制,让不同层去做不同类型的事情,让代码结构清晰,增加复用性。
主要有以下几种分层方式:
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)

相关文章

  • 当自动化与面向对象相遇-PO设计模式详解

    当自动化与面向对象相遇-PO设计模式详解 主题内容内容: 1.PO模式详解 2.从0到1搭建PO模型框架 3.PO...

  • PO设计模式详解

    PO:page objece,分层机制,让不同层去做不同类型的事情,让代码结构清晰,增加复用性。主要有以下几种分层...

  • PO设计模式

    1 PO设计模式 什么是设计模式? PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的...

  • PO设计模式

    自动化应用在什么地方? 1.冒烟测试 2.回归测试 3.用户场景的测试 什么项目适合自动化? 1.测试任务明确,不...

  • Design Patterns

    设计模式 ref:设计模式Java版Java开发中的23种设计模式详解 Source Code: https://...

  • PO

    PO:Page Object,po是一种设计模式,提供通用的方法,简单来说就是分层设计。 官方文档:https:/...

  • 11.7设计模式-策略模式-详解

    设计模式-策略模式 策略模式详解 策略模式在android中的实际运用 1.策略模式详解 2.策略模式在andro...

  • 11.8设计模式-模板模式-详解

    设计模式-模式模式 模板方法模式详解 模板方法模式在android中的实际运用 1.模板方法模式详解 2.模板方法...

  • PO模式

    简介:PO模式(Page Object), 是自动化测试中最为流行且最为熟悉和推崇的一种设计模式。PO模式把页面元...

  • 23种设计模式学习总结-第一遍

    如何学? 置顶:轮子哥指导如何学习“设计模式” 什么是设计模式? 设计模式推荐书籍w3c设计模式详解23中设计模式全解析

网友评论

      本文标题:PO设计模式详解

      本文链接:https://www.haomeiwen.com/subject/ilvldctx.html