一、Po模型介绍
1.简介
在自动化中,Selenium自动化测试中有一个名字经常被提及PageObject,通常PO模型可以大大提高测试用例的维护效率
2.为什么要用PO
基于python selenium2开始ui自动化测试脚本的编写不是多么艰巨的任务。只需要定位到元素,执行对应元素的操作即可。我们所能做的就是元素的定位,然后进行键盘输入或鼠标动作。但随着时间的迁移,测试套件将持续的增长。脚本也将变的越来越多。如果我们需要维护10个页面,100个页面,甚至1000个呢?那么页面元素的任何改变都会让我们的脚本维护变得繁琐复杂,而且变得耗时易出错。那怎么解决呢?ui自动化中,常用的一种方式,引入Page Object(PO):页面对象模式来解决,po能让我们的测试代码变得可读性更好,可维护性高,复用性高。
3.PO的优势
1、PO提供了一种业务流程与页面元素操作分离的模式,这使得测试代码变得更加清晰。
2、页面对象与用例分离,使得我们更好的复用对象。
3、可复用的页面方法代码会变得更加优化
4、更加有效的命名方式使得我们更加清晰的知道方法所操作的UI元素。
总结:
重用,业务和对象分离,代码结构清晰,方便代码维护
二、PageObject的设计模式
![](https://i-blog.csdnimg.cn/blog_migrate/65c3825e93e46d102e7b6b8f8d9bfd35.png)
三、PO的核心要素
1.在PO模式中抽离封装集成一个BasePage类,该基类应该拥有一个只实现webdriver实例的属性
2.每一个page都继承BasePage,通过driver来管理本page中元素,将page中的操作封装成一个个方法
3.TestCase继承unittest.Testcase类,并依赖page类,从而实现相应的测试步骤
总结
PO设计模式中的BasePage基类对应案例中的BasePage.py文件
PO模式中的pages中的案例显示Search.py
PO模式设计中TestCase对应案例中的TestCase.py
![](https://i-blog.csdnimg.cn/blog_migrate/6c94c7a1a20f5d63acb475557f4423b1.png)
四、非PO实现
五、PO实现(多个 page界面)
1.Base基类
2.Pages查找页面元素类
3.Case测试用例![](https://i-blog.csdnimg.cn/blog_migrate/f2bba8c58aa670f2c37ab9069980c56b.png)