PO模式的实现

PageObject模式

  PO模式,是目前测试行业公认最佳的自动化设计模式,取自关键字驱动模式来做的一次升级

  完全基于页面来实现模型

PO设计原理:

  提取selenium中公用的方法,作为基本对象

  页面业务流程的关联设计

  调用业务流程实现自动化设计

优势:

  将不同的页面封装成不同的页面对象,分别进行管理

  进一步降低冗余

  对于代码的阅读性和维护性有进一步提升

  以最低的成本实现最高的自动化产出

  将不同的页面进行信息化的区分

  可以对一个系统完整深入的测试

  测开针对公司的系统,结合需求与业务,结合实际项目的情况,设计对应用的测试框架与测试工具

提供给测试人员进行功率提升,并且进行维护

PO的实现:

在PO页面概念模式的设计当中 它是以页面作为对象的,页面当中的每一个元素其实固定的

如搜索框,登录按钮 我们在PO模式下,将页面当中关联到的变量写死,作为页面当中存有的内容

目录结构:

 

baseObject 基本类 (存放公共代码一般存放 元素定位 访问url 关闭)base_page.py:

# 这是基本类

from selenium import webdriver

class BasePage(object):

    browser = webdriver.Chrome()

    # 构造函数

    def __init__(self,browser):

        self.browser = browser

    # 访问URL

    def visit(self,url):

        self.browser.get(url)

    # 元素定位

    def locator(self,locator):

        return self.browser.find_element(*locator)

    # 关闭

    def quit_browser(self):

        self.browser.quit()

basepage (页面对象类 将搜索的页面做成一个完整页面对象) search_page.py:

# 页面对象类

# sear_page 文件:将搜索的页面做成一个完整页面对象

from basepage.base_page import BasePage

from selenium import webdriver

from selenium.webdriver.common.by import By

# 继承于base_page 继承类

class SearchPage(BasePage):

    # 因为一个页面的主要功能不会变 所以就可以直接进行写死

    # 搜索框  如果页面元素出现变更 可以把定位方式换为xpath

    input_id = (By.ID,'kw')

    # 百度一下按钮

    click_id = (By.ID,'su')

    # 对输入框进行内容的输入

    def input_text(self,input_text):

        self.locator(self.input_id).send_keys(input_text)

    # 点击查询按钮 实现本次搜索

    def click_element(self):

        self.locator(self.click_id).click()

    # 当前页 调试检验

    def check(self,url,input_text):

        self.visit(url)

        self.input_text(input_text)

        self.click_element()

if __name__ == '__main__':

    url = 'http://www.baidu.com'

    browser = webdriver.Chrome()

    sp = SearchPage(browser)

    # 因为加入调试函数 就可以在当前页进行调试

    # sp.visit(url)

    # sp.input_text('老祝头')

    # sp.click_element()

    sp.check(url,'老祝头')

        

# 这是基本类
原文地址:https://www.cnblogs.com/sunzzc/p/13377347.html