浅谈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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 浅谈 HTTP 和 HTTPS[通俗易懂]

    浅谈 HTTP 和 HTTPS[通俗易懂]HTTP作为我们浏览器与服务器之间通讯协议,目前这块知识成为了面试的高频率题,也是我们前后端同学必须掌握的部分,一起来看看吧!

    2022年10月16日
    0
  • linux 磁盘碎片整理

    linux 磁盘碎片整理1、sudofdisk-l查看各分区情况2、sudoe4defrag-c/dev/sda2查看碎片情况3、sudoe4defrag-v/dev/sda2碎片整理

    2022年6月25日
    33
  • leetcode 接雨水2_code42

    leetcode 接雨水2_code42题目链接给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9 提示:n == height.length0 <= n &lt

    2022年8月9日
    5
  • Java 二维数组转一维数组[通俗易懂]

    Java 二维数组转一维数组[通俗易懂]packageorg.fly.test;publicclassArrayTranfer{ publicstaticvoidmain(String[]args){ intint2d[][]={{1,2,3,9},{4,5,6,7,8}}; int[]int1d; intlen=0; for(int[]elemen

    2022年6月9日
    24
  • 大理旅游策划方案——定位“风花雪月”,大理游客翻倍!

    大理旅游策划方案——定位“风花雪月”,大理游客翻倍!大理旅游策划方案——定位“风花雪月”,大理游客翻倍!熊大寻旅游策划公司/文一、首次揭露云南旅游突然大转型的秘密:迪庆不卖藏族卖“香格里拉”!大理不卖白族卖“风花雪月”!丽江不卖纳西族卖“小资天堂”!点击浏览图片二十世纪初,云南旅游发生了一次悄无声息却影响巨大的深刻转型!当时熊大寻旅游策划公司提出了云南旅游发展战略:卖民族风情只能让人观光旅游、走马观花,只有转型为卖小资情调和诗意栖居,才能承接…

    2022年6月8日
    63
  • vmware虚拟机怎么设置上网「建议收藏」

    vmware虚拟机怎么设置上网「建议收藏」点击物理主机2-右键点击属性找到ipv43 在设置vmware虚拟机 4-在使用命令ifconfig 查看虚拟机的ip里面含有 inetaddrip 就是现在虚拟机的IP地址5-在使用XShell 链接该ip地址 就可以链接的…

    2022年5月19日
    39

发表回复

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

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