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,'老祝头')
# 这是基本类