100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 自动化测试设计模之PO(PageObject)

自动化测试设计模之PO(PageObject)

时间:2020-08-01 16:53:30

相关推荐

自动化测试设计模之PO(PageObject)

UI自动化中经常遇到例如也以下场景:需要经常对一个元素进行点击操作,我们会编写多处如下代码driver.find_element_by_id("login-btn").click(),如果开发人员修改了这个元素的id,测试人员需要维护所有对应用例里的代码,用例越多,给测试人员带来的维护工作量就越大,而PO则可以很好的解决这个问题,但其优点却不止如此。

一 、什么是PO?

PO(page object)的思想最早是由IT大佬Martin Flower提出,经典图样如下图(大佬原文链接),Selenium官方给出了PO的设计原则说明

PO是一种设计模式。具有以下优点:

1)测试代码与页面的定位代码(如定位器或者其他的映射)相分离

2)该页面提供的方法或元素在一个独立的类中, 而不是将这些方法或元素分散在整个测试中

这允许在一个地方修改由于UI变化所带来的所有修改。

PO模式的核心思想:分层

1)第一层 基础层(BasePage):封装一些最基础的selenium的原生的api方法,元素定位,框架跳转等

2)第二层 PO层:元素定位、获得元素对象,页面动作

3)第三层 测试用例层(case):业务逻辑,数据驱动

三者的关系:PO层继承继承层,测试用例层调用PO层。

注:PO不一定需要代表整个页面. PO设计模式可用于表示页面上的组件. 如果自动化测试中的页面包含多个组件, 则每个组件都有单独的页面对象, 则可以提高可维护性

二 、 非PO模式和PO模式优缺点对比

三、结合PO模式谈谈慧测

若套用PO模式,慧测框架的basePage层已与其他独立开,但PO和case层未完全解耦,框架在PO层加了自动关闭窗口,PO层只能做到有限的封装,暂未有达到页面维度的封装。

如一开始提到的问题,一旦前端元素有变动,所有使用到该元素的case都需要进行维护, 随着自动化用例越来越多,自动化用例的维护工作量将越来越大,建议将po层独立开,且不局限以页面为单位,可以细化到页面各模块或组件。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。