前面,我们讲了如何使用POI进行Excel的“按需读取”。根据前面我们写的BasePageX,我们可以很轻松的写出来基于这个“按需读取”的BasePage。

package webui.xUtils;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.util.HashMap; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.testng.Reporter; public class BasePageE extends UIExcutorImpl{
protected WebDriver driver;
protected String pageName;
// 页面名称
protected String xmlPath;
// 页面元素配置文件路径
protected HashMap<String, Position> positionMap;
//存储页面元素信息
protected logUtil log = new logUtil(BasePageE.class);
Position position = null;
public BasePageE(WebDriver driver, String pageName,String excelpath) throws Exception {
super(driver);
this.driver = driver;
this.pageName = pageName;
positionMap = ExcelReadUtil.readExcelDocuement(excelpath, pageName);
log.info("成功读取:" + pageName + "页面信息");
Reporter.log("成功读取:" + pageName + "页面信息");
} public void click(String positionName) throws Exception {
super.click(getPosition(positionName));
}
public void sendKey(String positionName, String value) throws Exception {
super.sendKey(getPosition(positionName), value);
}
public String getText(String positionName) throws Exception {
return super.getText(getPosition(positionName));
}
public String getAttribute(String positionName,String value) throws Exception {
return super.getAttribute(getPosition(positionName), value);
}
public WebElement getElement(String positionName) throws Exception {
return super.getElement(getPosition(positionName));
}
public boolean isElementDisplayed(String positionName) throws Exception {
return super.isElementDisplayed(getPosition(positionName));
}
@Override
public void switchWindow(String title) {
super.switchWindow(title);
log.info("切换窗口");
Reporter.log("切换窗口"+title);
}
public void switchFrame(String positionName) {
super.switchFrame(getPosition(positionName));
log.info("切换frame至:" + positionName);
Reporter.log("切换frame至:" + positionName);
}
@Override
public String getAlertText() {
return super.getAlertText();
}
public void mouseMoveClick(int x , int y) throws AWTException {
Robot rb1 = new Robot();
rb1.mouseMove(x,y);
rb1.delay(500);
rb1.mousePress(InputEvent.BUTTON1_DOWN_MASK);
rb1.delay(500);
rb1.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
rb1.delay(500);
log.info("将鼠标移动至:" + "(" + x +"," + y + ")");
Reporter.log("将鼠标移动至:" + "(" + x +"," + y + ")");
}
public void jsClick(String positionName) throws Exception {
super.jsClick(getPosition(positionName));
}
public void waitElement(String positionName,int sec) {
super.waitElement(getPosition(positionName), sec);
} /** * 根据positionName返回对应的position
*/
public Position getPosition(String positionName) {
Position position = null;
if (positionMap != null) {
position = positionMap.get(positionName);
}
if(position ==null) {
log.error("没有找到"+positionName+"页面元素");
Reporter.log("没有找到"+positionName+"页面元素");
}
return position;
}
}

  这样,我们就完成了使用Exce读取页面元素的基础页面类。

  大家如果回顾之前的内容,就可以发现,我们根据读取方式的不同,可以写出不同的基础页面类。BasePageX----->基于XML读取,BasePageE------>基于Excel读取,那么我们也可以写BasePageM------>基于Mysql读取,BasePageO------>基于Oracle读取等等。细心的童鞋会发现,我能不能只写一个类,然后把读取方式作为参数放进去,然后根据读取方式参数的不同来定义我想要的BasePage呢?当然是可以的。大家可以自行扩展,我在这里就不赘述了。

  

  

基于Java+Selenium的WebUI自动化测试框架(十三)-----基础页面类BasePage(Excel)的更多相关文章

  1. 基于Java+Selenium的WebUI自动化测试框架(十二)-----读取Excel文件(POI)(2)

    上一篇我们讲了怎么利用Java的反射机制,将Excel的读取到的数据,赋值给我们构造函数中定义的变量. 接下来就简单了,我们将实际实现这个读取的简单过程.来看下面一段代码. private stati ...

  2. 基于Java+Selenium的WebUI自动化测试框架(九)-----基础页面类(BasePage)

    上篇我们写了java读取xml文件的类,实现了可以从xml文件读取元素的方式.那么,接下来我们需要考虑一个问题.我们拿了这些元素之后怎么去操作呢? 先来看看我们手工测试的时候是怎么进行的. 双击浏览器 ...

  3. 基于Java+Selenium的WebUI自动化测试框架(八)-----读取元素(XML文件)

    我们继续回到自动化测试框架的主线上来,在前面的文章中,我们定义一个页面元素的主要参数有:路径,找寻方式,等待时间,名称,这个四个参数.另外,我们还需要考虑一个问题,就是网站的页面. 举个例子来说,如果 ...

  4. 基于Java+Selenium的WebUI自动化测试框架(十)-----读取Excel文件(JXL)

    之前,我们使用了读取XML文件的方式来实现页面元素的读取,并做成了基础页面类.下面,我们来进行一些扩展,通过Excel来读取页面元素. Excel的使用,大多数人应该都不陌生.那么Java读取Exce ...

  5. 基于Java+Selenium的WebUI自动化测试框架(一)---页面元素定位器

    对于自动化测试,尤其是UI的自动化测试.是很多做黑盒功能测试的同学,入门自动化测试一个最为直观的或者说最容易理解的途径之一. 对于手工测试和自动化测试的优劣,网上有很多论述,在这里不作展开讨论.但是, ...

  6. 基于Java+Selenium的WebUI自动化测试框架(十四)-----使用TestNG的Sample

    到目前为止,我们所写的东西,都是集中在如何使用Selenium和Java来定位和读取元素.那么,到底如何具体开展测试,如何实现参数化,如何实现判定呢?下面,我们来看看Java应用程序的测试框架吧. 当 ...

  7. 基于Java+Selenium的WebUI自动化测试框架(六)---浏览器初始化

    本篇我们来讨论,如何写一个浏览器初始化的类.在写之前,先思考一下,我们需要一个什么样的初始化? 先来看看使用原生的Java + selenium是怎么做的.(以firefox为例) System.se ...

  8. 基于Java+Selenium的WebUI自动化测试框架(五)------页面操作实现类

    在编写完Log类和监听类之后,终于要回到正轨上来了.我们继续开始写UIExcutor的实现类. PS:如果你想让你的报告更加美观一些.推荐使用reportNG这个jar包. 在项目中导入reportn ...

  9. 基于Java+Selenium的WebUI自动化测试框架(四)-----设置监听类

    基于上一篇的内容,这里我们开始写监听类Listener.我这里写监听类的思路是,继承TestListenerAdapter这个类,然后对其中的方法进行重写.网上也有很多资料,建议先学习一下,然后写出来 ...

随机推荐

  1. 初识Neo4j

    Neo4j是一个世界领先的开源图形数据库. 它是由Neo技术使用Java语言完全开发的. Neo4j的优点 它很容易表示连接的数据 检索/遍历/导航更多的连接数据是非常容易和快速的 它非常容易地表示半 ...

  2. c++连接打印机(转载)

    Visual C++6.0是开发Windows应用程序的强大工具,但是要通过它实现程序的打印功能,一直是初学者的一个难点,经常有朋友询问如何在VC中实现打印功能,他们往往感到在MFC提供的框架内实现这 ...

  3. Django模型层之ORM

    Django模型层之ORM操作 一 ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软 ...

  4. AX导出excel设置格式

    今天在AX2009里面写一个导出EXCEL,没有模版,这是第一次碰到,之后写完之后发现导出的数据格式不对. 到处取经之后得到一下结果: 定义一个 Com   range; SysExcelCells  ...

  5. Java多线程编程之读写锁【ReentrantReadWriteLock】

    有时候我们需要有这样的需求:        对于同一个文件进行读和写操作,普通的锁是互斥的,这样读的时候会加锁,只能单线程的读,我们希望多线程的进行读操作,并且读的时候不能进行写操作,写的时候不能进行 ...

  6. Python模拟知乎登录

    # -*- coding:utf-8 -*- import urllib import urllib2 import cookielib import time from PIL import Ima ...

  7. 基于CentOS6.5的Dubbo及Zookeeper配置

    基于CentOS的Dubbo及Zookeeper配置 需要提前准备好的资料: 1.首先配置java环境 步骤: 将jdk的包上传至centos服务器的/opt目录下,并且解压 tar -zxvf jd ...

  8. angularjs 文件下载 并 从response header中获取文件名

    最近在做一个下载文件的功能,后台接口给的是二进制流的方式,那么前端要把二进制流下载下来. 这个过程使用$http的get请求,使用Blob接收,倒是没有难度,主要是遇到了,后台的文件名拿不到 的问题. ...

  9. 和我一起,重零开始学习Ant Design Pro开发解决方案(二)部署示例项目

  10. Java并发多线程面试题 Top 50

    不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程 ...