什么是PO模式?

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 模式,需要操作页面控件的地方,都需要再写一遍页面控件的代码,造成代码冗余还不利于维护。



我的回答