【UI自动化测试】经典框架及模型

参考:

https://www.cnblogs.com/CesareZhang/p/11140520.html

https://www.cnblogs.com/CesareZhang/p/10744722.html

框架结构:


Business:业务相关公共模块,如登录

Common:业务无关公共模块,如读取文件

PageObject:页面元素封装

TestCase:测试用例层

TestData:测试数据

TestSuite:测试套件

browser.ini:运行浏览器配置文件
https://www.cnblogs.com/CesareZhang/p/10738541.html


run.py:运行文件



Page Object(页面对象)模式

https://www.cnblogs.com/yinjia/p/9503267.html

https://www.cnblogs.com/xiaofeifei-wang/p/6733753.html

 https://www.cnblogs.com/xiaofeifei-wang/p/6733753.html

 https://www.cnblogs.com/yuanchunli/articles/7576142.html

https://zhuanlan.zhihu.com/p/157136254

页面对象,并将页面元素定位方法和元素操作进行分离。

当Web页面编写测试时,需要操作该Web页面上的元素,如果在测试代码中直接操作HTML元素,那么代码比较脆弱,因为UI频繁变动。可用到page对象封装成一个HTML页面,通过提供的API来操作页面元素。

什么是POM?
1. 页面对象模型 是 为Web UI元素创建Object Repository的设计模式 。
2. 在这个模型下,对于应用程序中的每个网页,应该有相应的页面类
3. 此Page类将会找到该Web页面的WebElements,并且还包含对这些WebElements执行操作的页面方法
4. 这些方法的名称应该按照他们正在执行的任务给出

POM的优点
1. 页面对象Patten表示UI中的操作和流程应与验证分开。这个概念使我们的代码更清洁,易于理解。
2. 第二个好处是 对象存储库独立于测试用例,因此我们可以使用与不同工具不同的目的使用相同的对象存储库。
例如,我们可以将POM与用于功能测试的TestNG / JUnit进行集成,并与JBehave / Cucumber同时进行验收测试。
3. 由于POM类中的可重用页面方法,代码变得更少和优化。
4. 方法采用更实际的名称 ,可以轻松地映射UI中发生的操作。即如果在点击按钮后,我们登陆主页,方法名称就像'gotoHomePage()'

优点如下:

  •   减少代码的重复
  •   提高测试用例的可读性
  •   提高测试用例的可维护性,特别是针对UI频繁变化的项目

如何实现POM?
简单的POM:
它是页面对象模型(POM)的基本结构,其中AUT的所有Web元素和在这些Web元素上操作的方法都保留在类文件中。
类的验证的任务应该作为测试方法的一部分分开.

 
对脚本的实现分为三层:
  对象层: 用于存放页面元素定位和控件操作
  逻辑层: 则是一些封装好的功能用例模块
  业务层: 则是我们真正的测试用例的操作部分

在Page Object设计时,可以有两种设计模式:

    1. 在Class中实现逻辑功能,比如判断title是否显示正确,页面跳转是否正确,只需要返回函数执行结果(True OR False)即可

    2. 在Class中返回元素内容,比如返回title内容,具体的逻辑在测试页面代码中书写,这样Page Object 端只需要获取元素和返回值就行啦,工作也比较简单

原文地址:https://www.cnblogs.com/cathygx/p/14450871.html