您的位置:首页 > 移动开发 > Objective-C

Selenium2(java)页面对象模型(Page Object) 八

2016-01-27 22:09 531 查看
在开发一个 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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: