【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
页面对象,并将页面元素定位方法和元素操作进行分离。
什么是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 端只需要获取元素和返回值就行啦,工作也比较简单