PO的主要价值体现在对界面交互细节的封装,这样可以使测试案例可以更关注与业务而非界面细节,提高测试案例的可读性。

 
以传统的登陆页面为例實現PO模式,因为每个用例中都需要登陆。
其中需要使用PageFactory.initElements()工厂方法,此方法也可以解决页面元素过期的问题。
 。。
页面层,对用例中需要用到的元素定义的Page文件中。
/**
 * 登陆页页面元素
 * @author herry
 *
 */
public class LoginPage {
@FindBy(id="ploginname")
public static WebElement username;
@FindBy(id="j_password")
public static WebElement password;
@FindBy(id="captchaCode")
public static WebElement code;
@FindBy(css="a.account_15")
public static WebElement sumbitButton;
}
 
 
//封裝主要的業務功能操作,例如這裡的登陸功能,
public class LoginUK_Control extends LoginPage {
LoginPage loginPage=PageFactory.initElements(driver, LoginPage.class);
/**
* 登录loginUK
* @param username
* @param pass
* @param code
* @param flag 账户状态
*/
public LoginUK_Control(String username,String pass,String code) {
loginPage.username.clear();
loginPage.username.sendKeys(username);
loginPage.password.clear();
loginPage.password.sendKeys(pass);
loginPage.code.clear();
loginPage.code.sendKeys(code);
loginPage.sumbitButton.click();
 
}
}
 
//在用例層面,每次調用登陸業務時,只需要調用control方法,無需關注頁面層面,這樣如果頁面層面有改動,也只需修改Page方法即可。
@Test(dataProvider = "dataFortestMethod")
public void NZ_Front_001(Map<String, ArrayList<String>> data) {
driver.get(config.getValue("config.LoginUKURL"));
new  Control(data.get("username").get(0).toString(), data
.get("password").get(0).toString(), data.get("code").get(0)
.toString());
assertEquals(driver.getTitle(),
Init.properties.getValue("forexHome.title"));
home.loginOut.click();
}

PO页面对象模式封装的更多相关文章

  1. PageObject 页面对象模式

    一.PageObject 页面对象设计模式  (一个页面建一个类,即对象,页面对象) 每个页面都建对应的class,类中包含了页面的输入框.标题.元素等元素,测试代码中测试这个页面时,只需要调用这个页 ...

  2. PageObjec页面对象模式(理论)

    ui自动化测试的分层思想:实现测试数据与业务数据分离 1. 基础层 2. 对象层:每个页面的操作元素封装为一个文件 3.测试用例层:调用对象层封装的方法进行测试用例编写

  3. 页面对象(Page Object)模式

    内容转载自 https://www.cnblogs.com/yytesting/p/6973474.html 页面对象(Page Object)模式是目前自动化测试领域普遍使用的设计模式之一,此模式可 ...

  4. 5.8 页面对象(Page Object)模式

    页面对象(Page Object)模式是目前自动化测试领域普遍使用的设计模式之一,此模式可以大大提高测试代码的复用率,提高测试脚本的编写效率和维护效率,是中级自动化测试工程师的必备技能之一. 1.页面 ...

  5. [译]Selenium Python文档:六、页面对象

    本章是介绍页面对象设计模式的教程.一个页面对象代表了web应用用户接口的一片区域,你的测试代码将与之交互的. 使用页面对象模式的好处: 可以创建在多个测试样例中都可使用的可重用代码 减少重复性代码 如 ...

  6. js原生设计模式——7原型模式之真正的原型模式——对象复制封装

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  7. JS设计模式(三) 数据访问对象模式

    引言 HTML5 提供了两种在客户端存储数据的新方法:localStorage.sessionStorage,他们是Web Storage API 提供的两种存储机制,区别在于前者属于永久性存储,而后 ...

  8. selenium测试框架篇,页面对象和元素对象的管理

    前期已经做好使用Jenkins做buildhttp://www.cnblogs.com/tobecrazy/p/4529399.html 做自动化框架,不可避免的就是对象库. 有一个好的对象库,可以让 ...

  9. Skyline基本操作模式封装

    skyline基本操作模式 项目中基于skyline的浏览器插件进行二次开发,基本的业务操作模式如下: 工具栏:点击工具栏某个功能,开启操作模式. onFrame:鼠标移动预选对象,在能够拾取或者选定 ...

随机推荐

  1. [转]Ext.grid常用属性和方法

    原文地址:http://blog.csdn.net/fm19901229/article/details/8113969 1.Ext.grid.GridPanel  主要配置项:  store:表格的 ...

  2. 在SQL Server中创建用户角色及授权

    参考文献 http://database.51cto.com/art/201009/224075.htm 正文 要想成功访问 SQL Server 数据库中的数据, 我们需要两个方面的授权: 获得准许 ...

  3. 解决nginx reload失败

    1. 失败提示信息 nginx: [error] open() : No such file or directory) 2. 解决方法 /usr/local/nginx/sbin/nginx -c ...

  4. 各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT_转

    转自:各种开源协议介绍 BSD.Apache Licence.GPL V2 .GPL V3 .LGPL.MIT 现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的 ...

  5. 工具软件 PYUV打开raw图片

    引自:http://blog.csdn.net/lavenderss/article/details/51495648 [pYUV]如何打开YUV/RGB图片 pYUV工具本身使用起来比较简单,但如果 ...

  6. 搭建自己的挂Q平台

    准备工作: 在前篇[分享]免费建立自己的站点里面介绍了怎么申请免费域名和空间. 在这里[随记]Q号解除限制一波三折有我被挂Q工具坑苦的经历. 在网上(出处不明了,下载的包太多,非CSDN)下载到的免费 ...

  7. 半个月使用rust语言的体验

    从第一次下载rust语言的编译器到今天刚好第14天. 简单说一下对这个语言的感觉吧. 一.性能 把以前用java写的一个中文地址切分的算法,用rust重新实现了一下(https://github.co ...

  8. WebRTC 源码分析(三):安卓视频硬编码

    数据怎么送进编码器? 怎么从编码器取数据? 如何做流控? 在开始之前,我们先了解一下 MediaCodec 的基本知识. MediaCodec 基础 Developer 官网 上的描述已经很清楚了,下 ...

  9. PHP开发安全问题总结

    php给了开发者极大的灵活性,但是这也为安全问题带来了潜在的隐患,近期需要总结一下以往的问题,在这里借翻译一篇文章同时加上自己开发的一些感触总结一下. 简介 当开发一个互联网服务的时候,必须时刻牢记安 ...

  10. nvalid bound statement (not found)

    问题详情: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.coocaa.te ...