Selenium的PO设计模式

Page Object(页面对象)模式,是一种将页面元素定位和元素操作方法按照页面抽象出来,分离成一定的对象,然后再进行组织的一种设计模式,类似于java中的MVC 模式,代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

如果不使用pageObeject设计模式,在web自动化测试,当页面变化时,就意味着以前的定位元素方法不能用了,需要重新修改元素定位方式,要一个一个的从测试脚本中把需要修改的元素定位方式找出来,然后再进行修改。这会使脚本维护的成本变高,更达不到自动化测试的初衷。 PageObject模式可以完美解决这个问题。

 PageObject 的优点

  减少代码冗余

  业务和实现分离

  降低代码维护成本


PageObject 的概念

页面对象,并将页面元素定位方法和元素操作进行分离。

  在实际自动化测试实战过程中,我们一般对脚本的实现分为三层:

  对象层: 用于存放页面元素定位和控件操作

  逻辑层: 存放一些封装好的功能用例模块

  业务层: 则是我们真正的测试用例的操作部分

PageObject 的六大基本原则

方法意义
◆用公共方法代表UI所提供的功能
◆方法应该返回其他的PageObject或者返回用于断言的数据
◆同样的行为不同的结果可以建模为不同的方法
◆不要在方法内加断言
字段意义
◆不要暴露页面内部的元素给外部
◆不需要建模UI内的所有元素

登录场景


◆登陆页面提供login findPassword功能
  ◆Login类+ login findPassword方法
◆登录页面内的元素有多少并不关心,隐藏内部界面控件
◆登录成功和失败会分别返回不同的页面
  ◆findPassword
  ◆loginSuccess
  ◆loginFail
◆通过方法返回值判断登录是否符合预期

代码示例:

以企业微信为例

父类方法:

public class BasePage {

    WebDriver driver;

    public BasePage(WebDriver driver){
        this.driver=driver;
    }


    public BasePage() {
    }

    void  click( By by ){
        driver.findElement(by).click();
    }

    void sendKeys(By by,String content){
        driver.findElement(by).sendKeys(content);
    }


}
package test.com.wxtest.web;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import org.openqa.selenium.By;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.chrome.ChromeDriver;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import jav
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值