PO 模式(Page Object Model),页面对象设计模式,UI 自动化测试中常用的设计模式。使用 PO 模式的自动化测试脚本能减少大量重复代码,使测试脚本更加具有维护性,可读性更好,同时具备更高的复用性。
PO 模式的主要思想是把页面对象,包含页面上的控件以及操作控件的动作,抽象封装成一个类。测试业务逻辑的代码,基于页面对象来完成相应的页面操作,固定调用格式为:
xxxPage.xxxComponent.xxxOperate
当页面有变动时,只需要修改 PageObject 类中的代码即可,测试业务逻辑的代码不用修改。使用 PO 模式和未使用 PO 模式的测试脚本代码,两者的区别可以通过下面的伪代码对比出来。
PO 模式伪代码:
class BaiduPage(){ inputElement = findElemetByID("kw"); searchButtonElement = findElemetByID("su"); } test_serach(keyWord){ BaiduPage.inputElement.input(keyWord); BaiduPage.searchButtonElement.click; }
上面的伪代码只是抽象了页面控件,也可以把页面控件的操作也写到页面对象类中,抽象粒度需要结合业务实际来决定,并不是抽象维度越高越好。
非PO 模式伪代码:
test_serach(keyWord){ inputElement = findElemetByID("kw"); searchButtonElement = findElemetByID("su"); inputElement.input(keyWord); searchButtonElement.click; }
使用PO 模式,需要操作页面控件的测试方法中,按照固定的调用格式直接调用即可,不用再重复写页面控件的代码,页面控件一处编写可以多处复用。非 PO 模式,需要操作页面控件的地方,都需要再写一遍页面控件的代码,造成代码冗余还不利于维护。