浅谈 PageObject模式

做过UI自动化的都晓得,在做UI自动化时定位特别依赖页面,一旦页面发生变更就不得不跟着去修改页面定位。
在webdriver中,假设你想对一个元素定位操作,那么你可能会编写下面的代码:
driver.findElement(By.id("ad")).click();
发现问题:
你有10个地方对这个元素做了这个操作,哪天这个控件的元素变了,你就不得不去修改10个地方。
那么,有什么好的方法来解决这个问题呢?
这就是PageObject模式的引入的必要性。
那到底什么是PageObject模式?
PageObject 见名思意思,就是页面对象,也就是把界面定位和业务操作分开,在我现在团队我推行的是三层模式,把UI自动化分为了对象库层,操作层和业务层。PO思想对界面交互细节进行了封装,这样可以使测试案例更关注业务,而非界面细节,提高了测试案例的可读性,同样也可以为我后期BDD(Behavior Driven Deveopment)的推行打好基础。

废话这么多来看个例子吧:
假设我现在要做一个登陆操作,那么我创建一个对象库层:

public class LoginPage{
    public static By userName = By.name("userName");
    public static By pwd = By.name("passWord");
    public static By login=By.id("login");
}

 操作层:
public void inputUser(String name, String pwd) {
    driver.findElement(LoginPage.userName).sendKeys(name);
     driver.findElement(LoginPage.pwd ).sendKeys(pwd);

}

业务层:
@Test
public void login(){
    login.inputUser("username","pwd");
    tools.click("点击【登录】",login);
}

很容易从上面的案例可以看出,PO模式引入前后的区别:


当然减少UI自动化脚本的维护,提高测试案例的可读性方式很多的,PO不是唯一的,也不是什么真理,根据自己环境拿出一套合适的方案才是目标。

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值