浅谈PO模式

浅谈PO模式浅谈PO模式概述设计原则功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入概述PO模式是自动化测试的一种常见设计思路,核心思想是通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码

大家好,又见面了,我是你们的朋友全栈君。

概述

PO模式是自动化测试的一种常见设计思路,核心思想是通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化, 只需要调整页面元素封装的代码,提高测试用例的可维护性、可读性。换句话说,将每个页面封装成页面类,将页面间通过页面元素进行的操作抽象出来,通过管理这些抽象出来的方法管理用例集。

设计原则

  • The public methods represent the services that the page offers
  • Try not to expose the internals of the page
  • Generally don’t make assertions
  • Methods return other PageObjects
  • Need not represent an entire page
  • Different results for the same action are modelled as different methods
    (摘自:https://github.com/SeleniumHQ/selenium/wiki/PageObjects)

优点

  1. 业务代码和测试代码分离,降低耦合易于管理
  2. 减少冗余代码

小例子

我们以PO的思路去设计一个测试百度搜索的自动化测试代码

  1. basePage,封装页面操作和页面元素
//test
from selenium import webdriver

class BasePage(object):

    def __init__(self):
        self.driver = webdriver.Chrome()
        self.driver.get(u"http://www.baidu.com")

    def find_element(self, *args):
        return self.driver.find_element(*args)
        
  1. 封装百度页面的页面元素和操作
from selenium.webdriver.common.by import By
from pages.basePage import BasePage


class BaiduPage(BasePage):
	#元素id
    baidu_text_loc = (By.ID, 'kw')
    baidu_submit_loc = (By.ID, 'su')
	
	#定位搜索框元素
    def get_text_obj(self):
        text_ele = self.find_element(BaiduPage.baidu_text_loc)
        return text_ele
        
	#定位提交索索内容的按钮元素
    def get_sub_obj(self):
        sub_ele = self.find_element(BaiduPage.baidu_submit_loc)
        return sub_ele
        
	#执行搜索操作
    def search(self, key_words):
        self.get_sub_obj().send_keys(key_words)
        self.get_sub_obj().click()

  1. 用例集
from ddt import ddt, data
from pages.baiduPage import BaiduPage

@ddt
class BaiduTest(unittest.TestCase):

    @data('软件测试', '硬件测试')
    def test01(self, seaString):
        BaiduPage().search(seaString)
        time.sleep(5)

if __name__ == '__main__':
    unittest.main()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145846.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月13日 下午5:00
下一篇 2022年5月13日 下午5:00


相关推荐

  • 使用ABP打造SAAS系统(2)——前端框架选择[通俗易懂]

    使用ABP打造SAAS系统(2)——前端框架选择[通俗易懂]一、流行框架比较  作者用过的前端框架不少,曾经还在一个项目中同时使用两套框架控件(年少无知、效率特慢),所以可供选择的前端框架有不少:easyui: 优点:非常成熟的框架,基于iframe可以进行多线程操作 缺点:由于采用iframe,不优化情况下效率是个问题,同时iframe导致对SEO的支持不是很好,自带风格不是很符合现在人的口味,自己定义风格有点浪费时间,顺便提供下本人自…

    2026年1月26日
    5
  • Git安装与配置(mac版本)

    Git安装与配置(mac版本)教程目录 0x00 教程内容 0x01Git 的下载与安装 1 下载 2 安装 0x02Git 的配置 1 配置用户名和用户邮箱 0x03 校验 Git0xFF 总结 0x00 教程内容说明 我安装的 Git 版本是 2 16 2 教程参考 MAC 端 Git 安装以及环境搭建 0x01Git 的下载与安装 1 下载 a 方式一之官网下载 保险期间还是用这种方式好点咯 https www git

    2025年10月20日
    9
  • flashfxp3.41中文版注册码:(适合最新版本)

    flashfxp3.41中文版注册码:(适合最新版本)推荐(尚未被封的Realkey)FLASHFXPvACq2ssbvAAAAAC1W7cJKQTzmx77zmqJICvA7d3WnUtWNXdrp8YuERRFdIvXfOPbcpABkVix2aRTgg6afcIKFPxS72XYljdE9tgQD/2r+kmfVBngGM4Qc9p7e0PcTfFF/1tt2bqlxS8r0L7z0jrqb5NSiPr…

    2022年7月26日
    7
  • 最火的C语言编程软件,适合编写C语言代码的编程软件有哪些

    最火的C语言编程软件,适合编写C语言代码的编程软件有哪些C语言基本上是大学计算机及其相关专业在大一上学期就会开的一门课程,但是很多学生就是在大一上学期期末的时候很着急,因为自己完全没有学好C语言,感觉一学期白学了,其实究其主要原因,还是因为你在上课认真听了,也做了课堂作业,但是却没有在课后好好的自己去主动敲代码,笔者不能让你有多主动去自己实践,但是笔者可以给你介绍几款更好的写代码的软件(手机电脑都可以)。C语言作为一门起源比较早的编程语言,可以编程的手…

    2022年5月29日
    72
  • VS注释快捷键整理

    VS注释快捷键整理在 VisualStudio 中使用快捷键注释代码 无论是行注释还是块注释 第一步一定是选中要注释的内容 取消注释同样要先选中 当然 如果是行注释 不必选取整行 将光标定位到该行即可 下面整理一下 VisualStudio 中行注释和块注释的快捷键 以及快捷键的查看与修改 行注释行注释有以下两种方式 方式一 注释 Ctrl K Ctrl C 取消 Ctrl K Ctrl U 方式二 注释和取消都是这组快捷键 Ctrl K Ct

    2026年3月20日
    1
  • 在 Spring Boot 中使用 Dataway 配置数据查询接口

    在 Spring Boot 中使用 Dataway 配置数据查询接口Dataway 介绍 Dataway 是基于 DataQL 服务聚合能力 为应用提供的一个接口配置工具 使得使用者无需开发任何代码就配置一个满足需求的接口 整个接口配置 测试 冒烟 发布 一站式都通过 Dataway 提供的 UI 界面完成 UI 会以 Jar 包方式提供并集成到应用中并和应用共享同一个 http 端口 应用无需单独为 Dataway 开辟新的管理端口 这种内嵌集成方式模式的优点

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号