POM
什么是POM
含义:POM(Page Object Model)的主要目标是将测试代码和页面对象的实现代码分离,以提高测试代码的可维护性和可读性。
POM特点
PO设计模式具有以下优点::
测试代码与页面的定位代码(如定位器或者其他的映射)相分离。该页面提供的方法或元素在⼀个独立的类中,而不是将这些方法或元素分散在整个测试中.
总结:PO就是,以每个页面或者页面中的组件为单位,进行自动化代码的维护,可以和关键字驱动结合起来,进⼀步提高代码的可维护性和复用性
关键字驱动(webkeys层)
什么是关键字驱动
关键字驱动:就是将常用的重复性行为封装起来
比如:打开网页,定位元素,定位元素+等待,通过send_keys发送内容等等,这些封装的目的就是减少代码的冗余
为什么要进行关键字的封装?
封装重复行为,减少代码冗余
1.比如我们经常遇见某些元素需要显示等待,那么定位这个元素就需要两步,显示等待+定位,但是通过封装我们就可以通过调用一个函数,来一步实现(这样就减少代码冗余)
page层
什么是page层
这一层是将对页面的操作剥离出来
为什么要剥离出page层?
测试代码和页面对象的实现代码分离,目的是提高可维护性-后续若页面UI有所改动只需更改page层的py,不需要动test_case层的py
封装思路
1.webkeys层(封装重复行为,减少代码冗余)-> pages层(测试代码和页面对象的实现代码分离,目的是提高可维护性-后续若页面UI有所改动只需更改page层的py,不需要动test_case层的py)->
test_case层,实现测试用例的业务逻辑(只要测试用例的逻辑不变,这一层几乎就不用修改)
2.util层(存放公共的方法:读取数据,处理失败用例的截图,log封装)
3.数据分为三个:
第一个:data层-存放测试中用到的基本数据(yaml文件)
第二个:config层-存放测试中常用的数据,比如URL,USER_NAME,PASSWD等
(config是变量统一管理文件,为了方便在代码中识别,目录、文件、变量名全部大写)
第三个:locate层-里面放了常用的元素的定位