在开发一个 Selenium WebDriver 测试,我们可以使用页面对象模型。这个模型可以使测

试脚本有更高的可维护性,减少了重复的代码,把页面抽象出来。对象模型也提供了一个注释,帮助缓存远程,避免出现元素过期的问题。

分类页面元素

新建java项目selenium_po,导入testng和selenium类库

新建一个page包和一个test包用于存放测试用例

在page包中新建一个BDPage.java用于存取元素

具体代码:

packagepage;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.WebElement;importorg.openqa.selenium.support.CacheLookup;importorg.openqa.selenium.support.FindBy;importorg.openqa.selenium.support.PageFactory;public classBDPage {//定义元素变量

/**定义百度搜索的输入框*/@FindBy(id="kw")

@CacheLookuppublicWebElement keyword_input;/**定义百度搜索的搜索按钮*/@FindBy(id="su")

@CacheLookuppublicWebElement search_button;//创建一个构造函数,并且调用PageFactory.initElements()方法来初始化元素。换句话说,将元素映射到我们定义好的变量上。

publicBDPage(WebDriver driver) {

PageFactory.initElements(driver,this);

}

}

分离页面操作

新建页面类:HaoSouPage.java

具体代码:

packagepage;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.WebElement;importorg.openqa.selenium.firefox.FirefoxDriver;importorg.openqa.selenium.support.CacheLookup;importorg.openqa.selenium.support.FindBy;importorg.openqa.selenium.support.PageFactory;public classHaoSouPage {/**输入框*/@FindBy(name="q")

@CacheLookupprivateWebElement HSP_INPUT_KEYWORD;/**搜索按钮*/@FindBy(id="search-button")

@CacheLookupprivateWebElement HSP_BUTTON_SEARCH;//定义测试地址

private final String url = "http://www.haosou.com/";private staticWebDriver driver;//提供一个外部获得driver的方法

publicWebDriver getDriver(){returndriver;

}public voidHaoSoupage() {

driver= newFirefoxDriver();

PageFactory.initElements(driver,this);

}public voidclose() {

driver.quit();

}public voidopenUrl() {

driver.get(url);

}//输入关键字selenium并点击查询

public voidsearchByKeyword() {

HSP_INPUT_KEYWORD.sendKeys("test");

HSP_BUTTON_SEARCH.click();

}

}

新建测试类:HaoSouPageTest.java

具体代码:

package test;

importorg.testng.annotations.Test;importpage.HaoSouPage;public classHouSouPageTest {

@Testpublic voidsearchTest() {//实例化haosou页面对象模型

HaoSouPage hsp = newHaoSouPage();//使用页面封装的打开链接方法

hsp.openUrl();//使用页面封装的输入操作

hsp.searchByKeyword();//使用页面封装的退出操作哦

hsp.close();

}

}

页面嵌套对象:

HaoSouPage.java :存储页面元素,相关操作以及嵌套ResultPage对象

ResultPage.java : 存储页面元素以及相关操作

HaoSouPageTest: 执行测试,检查结果

HaoSouPage.java

具体代码:

packagecom.po.page;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.WebElement;importorg.openqa.selenium.firefox.FirefoxDriver;importorg.openqa.selenium.support.CacheLookup;importorg.openqa.selenium.support.FindBy;importorg.openqa.selenium.support.PageFactory;public classHaoSouPage {/**@描述:好搜输入框*/@FindBy(name="q")

@CacheLookupprivateWebElement HSP_INPUT_KEYWORD;/**@描述:好搜搜索按钮*/@FindBy(id="search-button")

@CacheLookupprivateWebElement HSP_BUTTON_SEARCH;//定义测试地址

private final String url = "http://www.haosou.com/";private staticWebDriver driver ;//提供一个外部获得driver的方法

public staticWebDriver getDriver(){returndriver;

}//构造方法初始化元素

public voidHaoSouPage(){

driver= newFirefoxDriver();

PageFactory.initElements(driver,this);

}//包装退出方法

public voidclose(){

driver.quit();

}//打开网址

public voidopenUrl(){

driver.get(url);

}//输入关键字selenium并点击查询,并且返回到搜索界面

publicResultPage searchByKeyword(String keyword){

HSP_INPUT_KEYWORD.sendKeys(keyword);

HSP_BUTTON_SEARCH.click();return newResultPage();

}

}

ResultPage.java

具体代码:

packagecom.po.page;importorg.openqa.selenium.WebElement;importorg.openqa.selenium.support.CacheLookup;importorg.openqa.selenium.support.FindBy;importorg.openqa.selenium.support.PageFactory;importorg.testng.Assert;public classResultPage {/**搜索结果界面的搜索框*/@FindBy(id="keyword")

@CacheLookupprivateWebElement RP_INPT_KEYWORD;//构造方法初始化元素

publicResultPage(){

PageFactory.initElements(HaoSouPage.getDriver(),this);

}/**验证输入框的字是不是Selenium*/

public voidcheckKeyword(){//Assert是TestNG提供的一个断言操作,assertEquals(实际值,期望值),判断两个值是不是相等的。

Assert.assertEquals(RP_INPT_KEYWORD.getAttribute("value"), "selenium");

}

}

HaoSouPageTest.java

具体代码:

packagecom.po.testcase;importorg.testng.annotations.Test;importcom.po.page.HaoSouPage;public classHaoSouPageTest {

@Testpublic voidsearchTest(){//实例化haosou页面对象模型

HaoSouPage hsp =newHaoSouPage();//使用页面封装的打开链接方法

hsp.openUrl();//使用页面封装的输入操作,验证搜索结果输入框页面的值是不是selenium

hsp.searchByKeyword("selenium").checkKeyword();//使用页面封装的退出操作

hsp.close();

}

}

java webdriver page object_Selenium2(java)页面对象模型(Page Object) 八相关推荐

  1. %@ page language=java import=java.util.* pageEncoding=UTF-8%

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  2. ASP.NET页面对象模型:Page类介绍

    ASP.NET页面对象模型简介 Microsoft Internet 信息服务 (IIS) 所收到的对某 Microsoft ASP.NET 页面的每个请求都被移交给 ASP.NET HTTP 管线. ...

  3. java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记

    目录 1.介绍 2.结果效果 2.1大图 2.2细节小图 3.依赖 4.代码 4.1引入 4.2具体代码 4.3执行 5.Linux下安装chrome和chromedriver 5.1yum安装 5. ...

  4. java制作网易邮箱登录页面_Page Object实例(一) - Java + Selenium 登录163邮箱

    Page Object 是什么: Page Object(selenium wiki)是Selenium2开始提供的一种代码设计模式. 其核心思想是把web页面的元素查找及操作和页面测试分离开. 这样 ...

  5. Selenium2.0 WebDriver功能测试入门(Java版)

    我也一直使用着原始的人工测试手段,随着内容的不断增多,测试起来就越发的繁杂,而且经常犯懒,这样就会忽略很多本该发现的问题,而且也容易出现旧的bug 反复出现的情况,这都是测试不规范造成的.要做好东西就 ...

  6. JAVA实时运算_Java 实时运算簿页面

    java实时运算簿页面(Java Scrapbook Page) 写程序时可能会些其它的想法,但不知是否可行:多数情况是直接写到程序再来 debug,或是另外写各小程序. Eclipse 提供一种轻巧 ...

  7. JAVA项目:后台管理页面——显示数据库中所有信息+删除和编辑(MySQL)

    此DEMO包含以下功能 后台管理界面(删除+修改+显示数据库里所有数据) 修改编辑界面(表格检验+修改数据库里的值) 后台管理界面 (头像为默认头像,视频暂未上传) backstageUI.jsp & ...

  8. Java学习day3——Javaweb登录页面设计(1)(含JSP代码)

    写在前面 本文主要的内容是完成网页登录页面设计,以及判断用户名密码是否正确,如果正确,进入下一页面,并输出sessionID,若错误,则在登录页面给出用户名或密码错误提示,并在登录页面显示访问次数. ...

  9. java中wait的场景,wait——webdriver实用指南java版

    场景 Wait类的使用场景是在页面上进行某些操作,然后页面上就会出现或隐藏一些元素,此时使用WebDriverWait类的until方法来等待这些效果完成以便进行后续的操作.另外页面加载时有可能会执行 ...

最新文章

  1. 卷的作用_悄悄告诉你蛋糕卷零失败的秘诀!
  2. CaptCha的现状与未来
  3. cannot find symbol [ERROR] symbol: class DistributedFileSystem
  4. Linux缺少qt5core,关于qt5:无法运行Qt应用:找不到版本“ Qt_5”
  5. php if语句的缩写 实例
  6. python元组和列表的联系_Python | 一文看懂Python列表、元组和字符串操作
  7. typecho怎么用html编写文章,为Typecho文章增加HTML标签支持
  8. Ubuntu Server 16.04.x进入中文安装界面无法安装busybox-initramfs
  9. java源码-AtomicInteger
  10. oracle中某字段显示long,ORACLE的ALL_VIEWS数据字典text字段long类型问题
  11. c语言除法保留1位小数,高精度除法小数点位数
  12. ofd 文件发票解析
  13. 天使投资,众筹与项目背书
  14. maven阿里仓库配置教程
  15. java tif 转jpg_java 实现 tif图片(多页的)转换成jpg
  16. 即时通讯(IM)开源项目OpenIM本周版本发布-v1.0.6
  17. CMakeLists.txt范例
  18. 如何在html修改图片大小,HTML – 如何在CSS中动态调整图像大小?
  19. MATLAB 求解积分上、下限含有未知数的方程
  20. 怎样查看电脑中的开机启动项?简单方法!如何禁止电脑开机启动的选项?

热门文章

  1. APACHE的简单应用一
  2. 虹软sdk 服务器运行 错误码94212 解决方案
  3. matlab图像的主视图,求助大佬【如用MATLAB实现满足投影关系的三视图】
  4. 【工具推荐】ADB IDEA
  5. Cookie、Session和Storage
  6. 《中国人工智能学会通讯》——10.25 跨姿态和光照变化的低分辨率人脸识别
  7. 用node.js给图片加水印
  8. 正则表达式之量词(重复出现)?、*、+
  9. Mail服务器的搭建(4)----Web方式的邮件系统
  10. 监视和排错客户端性能和连接性