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. loadrunner文本检查点

    将脚本切换回代码界面, 在光标闪烁的上行,添加如下的代码: 添加的代码根据你检查的方式不同而不同, 你可以选择其中之一即可. 代码一: web_reg_find("Text=Payment ...

  2. [Issue]git做rebase时,弹出编辑器为nano,不会使用

    今天在做一个branch的rebase, 执行git rebase -i master的时候,自动弹出了nano 编译器,捣鼓了很久,还是不会编译,保存退出,执行Ctrl+X就自动结束了,查了下,需要 ...

  3. 人工智能常用 API

    人工智能常用 API 转载  2016年07月13日 19:17:27 2047 机器学习与预测 1.AlchemyAPI  在把数据由非结构化向结构化的转化中运用得较多.用于社交媒体监控.商业智能. ...

  4. Win10下打开chm文档提示无法显示该页的解决方法

    一是检查chm文件属性里最下面是否有个“解除锁定”,如有,点击“解除锁定”按钮就可以了. 如果没有上面提到的“解除锁定”,检查chm文件存放的路径.本例中,由于chm文件的存放路径中不能带有特殊字符“ ...

  5. Android Studio 学习笔记(1)

    最近从Eclipse转到Android Studio IDE,很多东西需要学习,本文是个记录. 项目结构 在Anroid Studio 中,一个Project 包括多个Module,每个Module下 ...

  6. name是个特殊的变量名吗

    这是为什么?求大神

  7. 【嵌入式】——arm裸机开发 step by step 之 按键控制 LED 和 蜂鸣器

    一.arm-9 TQ2440 key.h #ifndef __KEY_H__ #define __KEY_H__ #define GPFCON (*(volatile unsigned long *) ...

  8. LibreOffice openoffice 区别

    LibreOffice的初始版本号码被设置为与OpenOffice.org一致,故初始发布(2010年)即为第三版,并不存在第二版.第一版. 后来,甲骨文宣布停止OpenOffice.org的商业支持 ...

  9. minerd

    云服务器 ECS Linux 异常进程 minerd 导致系统 CPU 跑满 问题现象 云服务器 ECS Linux 服务器 CPU 跑满,或者使用服务器越来越慢. 问题原因 使用 top 命令看到有 ...

  10. struts2 拦截器配置

    CheckLoginInterceptor.java---拦截器具体实现类: package com.sunhoo.hcpms.struts2.action.interceptors; import  ...