Selenium2(java)页面对象模型(Page Object) 八
在开发一个 Selenium WebDriver 测试,我们可以使用页面对象模型。这个模型可以使测
试脚本有更高的可维护性,减少了重复的代码,把页面抽象出来。对象模型也提供了一个注释,帮助缓存远程,避免出现元素过期的问题。
分类页面元素
- 新建java项目selenium_po,导入testng和selenium类库
- 新建一个page包和一个test包用于存放测试用例
- 在page包中新建一个BDPage.java用于存取元素
具体代码:
package page;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.CacheLookup;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory; public class BDPage { //定义元素变量
/**定义百度搜索的输入框*/
@FindBy(id="kw")
@CacheLookup
public WebElement keyword_input; /**定义百度搜索的搜索按钮*/
@FindBy(id="su")
@CacheLookup
public WebElement search_button; //创建一个构造函数,并且调用PageFactory.initElements()方法来初始化元素。换句话说,将元素映射到我们定义好的变量上。
public BDPage(WebDriver driver) { PageFactory.initElements(driver, this);
} }
分离页面操作
新建页面类:HaoSouPage.java
具体代码:
package page;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.CacheLookup;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory; public class HaoSouPage { /**输入框*/
@FindBy(name="q")
@CacheLookup
private WebElement HSP_INPUT_KEYWORD; /**搜索按钮*/
@FindBy(id="search-button")
@CacheLookup
private WebElement HSP_BUTTON_SEARCH; //定义测试地址
private final String url = "http://www.haosou.com/";
private static WebDriver driver; //提供一个外部获得driver的方法
public WebDriver getDriver(){ return driver;
} public void HaoSoupage() { driver = new FirefoxDriver();
PageFactory.initElements(driver, this);
} public void close() { driver.quit();
} public void openUrl() {
driver.get(url);
} //输入关键字selenium并点击查询
public void searchByKeyword() {
HSP_INPUT_KEYWORD.sendKeys("test");
HSP_BUTTON_SEARCH.click();
}
}
新建测试类:HaoSouPageTest.java
具体代码:
package test;
import org.testng.annotations.Test;
import page.HaoSouPage; public class HouSouPageTest {
@Test
public void searchTest() { //实例化haosou页面对象模型
HaoSouPage hsp = new HaoSouPage(); //使用页面封装的打开链接方法
hsp.openUrl(); //使用页面封装的输入操作
hsp.searchByKeyword(); //使用页面封装的退出操作哦
hsp.close();
}
}
页面嵌套对象:
HaoSouPage.java :存储页面元素,相关操作以及嵌套ResultPage对象
ResultPage.java : 存储页面元素以及相关操作
HaoSouPageTest: 执行测试,检查结果
HaoSouPage.java
具体代码:
package com.po.page;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.CacheLookup;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory; public class HaoSouPage { /**@描述:好搜输入框*/
@FindBy(name="q")
@CacheLookup
private WebElement HSP_INPUT_KEYWORD;
/**@描述:好搜搜索按钮*/
@FindBy(id="search-button")
@CacheLookup
private WebElement HSP_BUTTON_SEARCH;
//定义测试地址
private final String url = "http://www.haosou.com/";
private static WebDriver driver ;
//提供一个外部获得driver的方法
public static WebDriver getDriver(){
return driver;
} //构造方法初始化元素
public void HaoSouPage(){
driver = new FirefoxDriver();
PageFactory.initElements(driver, this);
} //包装退出方法
public void close(){
driver.quit();
} //打开网址
public void openUrl(){
driver.get(url);
} //输入关键字selenium并点击查询,并且返回到搜索界面
public ResultPage searchByKeyword(String keyword){
HSP_INPUT_KEYWORD.sendKeys(keyword);
HSP_BUTTON_SEARCH.click();
return new ResultPage();
}
}
ResultPage.java
具体代码:
package com.po.page;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.CacheLookup;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.testng.Assert; public class ResultPage {
/**搜索结果界面的搜索框*/
@FindBy(id="keyword")
@CacheLookup
private WebElement RP_INPT_KEYWORD; //构造方法初始化元素
public ResultPage(){
PageFactory.initElements(HaoSouPage.getDriver(), this);
} /**验证输入框的字是不是Selenium*/
public void checkKeyword(){
//Assert是TestNG提供的一个断言操作,assertEquals(实际值,期望值),判断两个值是不是相等的。
Assert.assertEquals(RP_INPT_KEYWORD.getAttribute("value"), "selenium");
}
}
HaoSouPageTest.java
具体代码:
package com.po.testcase;
import org.testng.annotations.Test;
import com.po.page.HaoSouPage; public class HaoSouPageTest {
@Test
public void searchTest(){
//实例化haosou页面对象模型
HaoSouPage hsp =new HaoSouPage();
//使用页面封装的打开链接方法
hsp.openUrl();
//使用页面封装的输入操作,验证搜索结果输入框页面的值是不是selenium
hsp.searchByKeyword("selenium").checkKeyword();
//使用页面封装的退出操作
hsp.close();
}
}
Selenium2(java)页面对象模型(Page Object) 八的更多相关文章
- selenium 的页面对象模型Page Object
页面对象模型page object model是selenium中的一种脚本设计模式,它能将页面元素封装起来,与业务操作分隔开, 在页面变化改变时,无需去修改业务逻辑代码,提高脚本维护的效率. 1.p ...
- selenium2 页面对象模型Page Object
开发Selenium WebDriver测试时,可以使用页面对象模型,这样可使得测试脚本有更高的可维护性,减少了重复的代码,把页面抽象出来.同时页面对象模型也提供了一个注释,帮助缓存远程,避免出现元素 ...
- Selenium3+python自动化014-自动化常用设计模式页面对象模型 (Page Object)
一.概 念: PO(Page Object)设计模式是一种面向对象(页面对象)的设计模式,将测试对象及单个的测试步骤封装在每个Page对象中,以page为单位进行管理. 二.优点可以使代码复用,降低维 ...
- 页面对象(Page Object)模式
内容转载自 https://www.cnblogs.com/yytesting/p/6973474.html 页面对象(Page Object)模式是目前自动化测试领域普遍使用的设计模式之一,此模式可 ...
- java+Selenium+TestNg搭建自动化测试架构(3)实现POM(page+Object+modal)
1.Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码,提高测试用例 ...
- 5.8 页面对象(Page Object)模式
页面对象(Page Object)模式是目前自动化测试领域普遍使用的设计模式之一,此模式可以大大提高测试代码的复用率,提高测试脚本的编写效率和维护效率,是中级自动化测试工程师的必备技能之一. 1.页面 ...
- Selenium+java - Page Object设计模式
前言 Page Object(页面对象)模式,是Selenium实战中最为流行,并且被自动化测试同学所熟悉和推崇的一种设计模式之一.在设计测试时,把页面元素定位和元素操作方法按照页面抽象出来,分离成一 ...
- 通过Java + selenium +testNG + Page Objects 设计模式 实现页面UI的自动化
Page Objects 设计模式 简单的讲,类似与Java面向对象编程,把每个页面都抽象为一个对象类,将页面元素的定位.业务逻辑操作分离开,然后我们可以通过testNG实现业务流程的控制 与 测试 ...
- Python+Selenium使用Page Object实现页面自动化测试
Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通 ...
随机推荐
- Ubuntu系统如何卸载并安装新版本的jdk(permission denied问题)
1.如果是自带的openjdk运行下面可以删除: sudo apt-get purge openjdk* 但是这种情况又不一定成功,有时候运行java -version发现还是可以运行的.证明删除不成 ...
- 款待奶牛(treat)
款待奶牛(treat) 题目描述 FJ有n(1≤n≤2000)个美味的食物,他想卖掉它们来赚钱给奶牛.这些食物放在一些箱子里,它们有些有趣的特性:(1)这些食物被编号为1-n,每一天FJ可以从这排箱子 ...
- FACE++学习一、detect接口
/detection/detect 描述 检测给定图片(Image)中的所有人脸(Face)的位置和相应的面部属性 目前面部属性包括性别(gender), 年龄(age), 种族(race), 微笑程 ...
- 64位win7系统下面安装pyOpenSSL
原文地址:http://blog.csdn.net/xinsuixiaofeiyu/article/details/40350067 最近想装一个scrapy玩下爬虫,虚拟机Linux下面倒是很好安装 ...
- Java ZIP压缩和解压缩文件并兼容linux
JDK中自带的ZipOutputStream在压缩文件时,如果文件名中有中文,则压缩后的 zip文件打开时发现中文文件名变成乱码. 解决的方法是使用apache-ant-zip.jar包(见附件)中的 ...
- springMVC入门配置及helloworld实例
1. 新建web project 2. 往lib里copy必须的jar 3. 改写web.xml <?xml version="1.0" encoding="UTF ...
- FreeRTOS初步认识
源:FreeRTOS初步认识 用了半天时间对FreeRTOS有了一个初步的认识,大概总结一下,其中混杂了系统实现和实际应用方面的问题. 现只是以应用为目的,实现方面待以后进一步研究. 1.FreeRT ...
- SQL Server--导入和导出向导
作用:创建一个只需要最少的转换就可以快速导入或导出数据的包 操作步骤: 1 打开打入和导出向导方式 有四种方式 1)在SSMS(SQL Server Management Studio)中,右击目标数 ...
- nginx 生成 缩略图 and 生成缩略图到硬盘
nginx 编译的时候增加 ./configure --with-http_image_filter_module 配置如下 server { listen 80; server_name ...
- POJ 2373 Yogurt factory
简单DP. 这周所用的实际花费是上一周的花费+S与这周费用的较小值. #include<cstdio> #include<cstring> #include<cmath& ...