前面,我们讲了如何使用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. [LeetCode] 495. Teemo Attacking 提莫攻击

    In LOL world, there is a hero called Teemo and his attacking can make his enemy Ashe be in poisoned ...

  2. 深入理解-CLI与PHP-FPM

    原文地址:https://blog.csdn.net/lzx_victory/article/details/85917161 PHP-FPM模式相对于CLI比较复杂,因为PHP-FPM为常驻进程不断 ...

  3. 七、spring生命周期之初始化和销毁方法

    一.通过@Bean指定初始化和销毁方法 在以往的xml中,我们是这样配置的 <bean id="exampleInitBean" class="examples.E ...

  4. 02_四大组件之Activity

    四大组件之Activity 1. 理论概述 1.1 Activity的理解 Servlet的理解回顾 狭义 Servlet是一个interface,我们的Servlet类都必须是此接口的实现类 广义 ...

  5. Servlet知识点小结

    Servlet: server applet * 概念:运行在服务器端的小程序 * Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则. * 将来我们自定义一个类,实 ...

  6. python学习-69 包装和授权

    包装 1.二次加工标准类型(包装) class List(list): def append(self, a_objcet): if type(a_objcet) is str: super().ap ...

  7. Numpy中矩阵和数组的区别

    矩阵(Matrix)和数组(Array)的区别主要有以下两点: 矩阵只能为2维的,而数组可以是任意维度的. 矩阵和数组在数学运算上会有不同的结构. 代码展示 1.矩阵的创建 采用mat函数创建矩阵 c ...

  8. Python开发【源码剖析】 List对象

    前言 本文探讨的Python版本为2.7.16,可从官网上下载,把压缩包Python-2.7.16.tgz解压到本地即可 需要基本C语言的知识(要看的懂) PyListObject对象 PyListO ...

  9. 如何将 Redis 用于微服务通信的事件存储

    来源:Redislabs作者:Martin Forstner 翻译:Kevin (公众号:中间件小哥) 以我的经验,将某些应用拆分成更小的.松耦合的.可协同工作的独立逻辑业务服务会更易于构建和维护.这 ...

  10. typescript之基础类型

    基础类型分为:数字.字符串.数组.元组.枚举.Any.Object.Null.Undefined.Never.Void 各种类型写法如下: 1.数字(number) let num:number = ...