浅谈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()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)

    Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)一、前言:本文主要搭建SpringCloudEureka服务注册中心(多节点),本文基于SpringBoot1.5.2,SpringCloudCamden.SR6版本编写,版本不一致可能会有差异。下面就学习总结记录一下:二、搭建Eureka-Server首先,引入相应的依赖pom.xml:<?xmlversion=”1.0″encoding=”UTF-8″?…

  • 百万建模师的心声:3D游戏建模真的很累,但是数钱不累「建议收藏」

    百万建模师的心声:3D游戏建模真的很累,但是数钱不累「建议收藏」所有行业都是一样的,没有什么容易的,只不过这一行是偏向于技术的,一个有好的建模师月薪10k+是很常见的,这个需要有自己刻苦学习的成果。游戏建模前景在游戏模型行业,你基本不用担心找不到工作,因为游戏模型师人才缺口非常大。举个例子:游戏制作公司的人员配比大多数是这样的:比如100人的三维制作组,可能有60人在做模型贴图,10个人在K动画。只要你保证技能在手,一定是抢手的人才。【点击加入学习圈】游戏建模如今的市场竞争很大,工资很高,标准非常高,想要胜任一份高薪的工作不是那么容易。学习建模这是一个非

  • String转JsonObject对象「建议收藏」

    String转JsonObject对象「建议收藏」用阿里的fastjson里的一个方法,导入fastjson包SONObjectjsonObject1=JSONObject.parseObject(String)

  • java struts2 漏洞_struts2漏洞列表

    java struts2 漏洞_struts2漏洞列表【官方ID】S2-001【危害等级】高【受影响版本】WebWork2.1(开启altSyntax)WebWork2.2.0–WebWork2.2.5Struts2.0.0–Struts2.0.8【漏洞描述】altSyntax特性默认不开启,开启后,允许在文本串中注入OGNL表达式,且注入的表达式被逐层递归执行。攻击者可以在HTML中text域输入OGNL表达式,当form在服务器…

  • 软件包管理(三)–编译安装

    软件包管理(三)–编译安装

  • ucos创建任务流程图_createthread函数的参数

    ucos创建任务流程图_createthread函数的参数uC/OS-III任务创建函数OSTaskCreate()1.OSTaskCreate()函数原型voidTaskCreate(OS_TCB*p_tcb,//任务控制OS_TCB的地址CPU_CHAR*p_name,//任务的名字OS_TASK_PTRp_task,//任务代码的起始地址void*p_arg,//任务第一次运行时接收到

发表回复

您的电子邮箱地址不会被公开。

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