PageObject设计思想

PageObject思想

一、基本概念

它是一种设计模式,是实施selenium的最佳实践,能清楚的体现web应用和页面显示之间的关系。简单叙说就是把页面元素定位和元素操作方法还有页面业务分离。在设计过程中,对脚本进行分层:对象层、逻辑层、业务层、公共层。

1、对象库层

存放页面的元素信息,和页面特殊控件的操作方法。

2、逻辑层

存放一些封装好了的功能用例模块。

3、业务层

存放真正实现测试用例的操作。

4、公共层

在业务操作过程中,有几点是会经常变化的,比如页面访问地址、元素定位、业务流程-->构成功能页面,么就可以采用: 元素定位 --> 元素操作 --> 业务流程 进行分层,进一步细化,元素操作中的数据、异常处理、报告生成可以作为公共部分进行处理。

二、为什么要使用PageObeject

1、使用Selenium实现业务测试会遇到哪些对像?

    1.页面即Page,用来定位业务实现的位置;

    2.页面元素即element,用来定位业务操作的对像。

基本的实现逻辑:基于某个页面,操作某个元素,实现某个特定的功能。

2Selenium如何实现

    1)get(url),定位某个页面

 

    2)findelementby_XXX,定位某个元素 locator

 

    3)click/send/set......,操作元素、特定数据实现特定功能

 

    4)组合不同功能,实现某个特定的业务

3、实现selenium自动化的难点

什么影响了测试代码的实现和维护:可能变化的内容。

 如何减少可变化内容对代码的影响:分离可变和不可变内容,独立维护可变代码,减少可变代码对于整体代码的影响。

 如何实现可变内容与不可变内容分离:参数化,分层调用。

三、PageObject设计的好处

1、减少代码的编码量,和代码的维护工作,明确尔清晰的业务测试流程

2、集中管理页面中的元素对象,便于应对页面元素的变化

3、集中管理一个page中的公共方法,便于测试用例的编写

4、后期维护更新方便,不需要重复的修改代码

四、设计概念示例

1具体的做法如下

1、创建一个页面的类

2、在类的构造方法中,传递 WebDriver 参数。

3、在测试用例的类中,实例化页面的类,并且传递在测试用例中已经实例化的WebDriver对象。

4、在页面的类中,编写该页面的所有操作的方法

5、在测试用例的类中,调用这些方法

2、简单示例,登录

  对象层: UserID, Password, Login

  逻辑层: input(UserID), Input(Password), Click(Login Button)

  业务层: login(input(UserID), Input(Password), Click(Login Button))

  公共层: login url, driver, browser 

 软件设计的三层架构:界面层/表示层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer),高内聚低耦合,减少层次间的连系,减少变化带来的系统性变化。 

 

posted @ 2020-05-04 19:24  OnePlum  阅读(485)  评论(0编辑  收藏  举报