前面,我们讲了如何使用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)的更多相关文章
-
基于Java+Selenium的WebUI自动化测试框架(十二)-----读取Excel文件(POI)(2)
上一篇我们讲了怎么利用Java的反射机制,将Excel的读取到的数据,赋值给我们构造函数中定义的变量. 接下来就简单了,我们将实际实现这个读取的简单过程.来看下面一段代码. private stati ...
-
基于Java+Selenium的WebUI自动化测试框架(九)-----基础页面类(BasePage)
上篇我们写了java读取xml文件的类,实现了可以从xml文件读取元素的方式.那么,接下来我们需要考虑一个问题.我们拿了这些元素之后怎么去操作呢? 先来看看我们手工测试的时候是怎么进行的. 双击浏览器 ...
-
基于Java+Selenium的WebUI自动化测试框架(八)-----读取元素(XML文件)
我们继续回到自动化测试框架的主线上来,在前面的文章中,我们定义一个页面元素的主要参数有:路径,找寻方式,等待时间,名称,这个四个参数.另外,我们还需要考虑一个问题,就是网站的页面. 举个例子来说,如果 ...
-
基于Java+Selenium的WebUI自动化测试框架(十)-----读取Excel文件(JXL)
之前,我们使用了读取XML文件的方式来实现页面元素的读取,并做成了基础页面类.下面,我们来进行一些扩展,通过Excel来读取页面元素. Excel的使用,大多数人应该都不陌生.那么Java读取Exce ...
-
基于Java+Selenium的WebUI自动化测试框架(一)---页面元素定位器
对于自动化测试,尤其是UI的自动化测试.是很多做黑盒功能测试的同学,入门自动化测试一个最为直观的或者说最容易理解的途径之一. 对于手工测试和自动化测试的优劣,网上有很多论述,在这里不作展开讨论.但是, ...
-
基于Java+Selenium的WebUI自动化测试框架(十四)-----使用TestNG的Sample
到目前为止,我们所写的东西,都是集中在如何使用Selenium和Java来定位和读取元素.那么,到底如何具体开展测试,如何实现参数化,如何实现判定呢?下面,我们来看看Java应用程序的测试框架吧. 当 ...
-
基于Java+Selenium的WebUI自动化测试框架(六)---浏览器初始化
本篇我们来讨论,如何写一个浏览器初始化的类.在写之前,先思考一下,我们需要一个什么样的初始化? 先来看看使用原生的Java + selenium是怎么做的.(以firefox为例) System.se ...
-
基于Java+Selenium的WebUI自动化测试框架(五)------页面操作实现类
在编写完Log类和监听类之后,终于要回到正轨上来了.我们继续开始写UIExcutor的实现类. PS:如果你想让你的报告更加美观一些.推荐使用reportNG这个jar包. 在项目中导入reportn ...
-
基于Java+Selenium的WebUI自动化测试框架(四)-----设置监听类
基于上一篇的内容,这里我们开始写监听类Listener.我这里写监听类的思路是,继承TestListenerAdapter这个类,然后对其中的方法进行重写.网上也有很多资料,建议先学习一下,然后写出来 ...
随机推荐
-
android 52 粘滞广播
粘滞广播:广播发送出去以后,广播接收者还没有创建,当广播接收者注册的时候就可以接收,如果不是粘滞广播则如果没有广播接收者就以后不能再接收了. mainActivity: package com.sxt ...
-
关于socket的关闭:close和shutdown
通过两种方式可以关闭一个socket:close和shutdown.直接调用close关闭socket存在以下两个问题: 1. close只是将socket 描述字的访问计数减1,仅当描述字的访问计数 ...
-
读《effective C++》2
条款03:尽可能使用const(Use const whenever possible) 1.const == 奇妙的事 const的一件奇妙的事是,他允许你定义一个约束,(告诉编译器,这是一个“不该 ...
-
html5 mdn一些精彩的案例
https://developer.mozilla.org/zh_CN/docs/Games/Examples
-
mac 下直接给docker容器加映射 mysql 为例
如果你是下面这种情况,本文可能回给你一些帮助 os是Mac,docker中已有mysql容器,并且已经有数据,但是没有设置映射,想要从主机连接docker 中的mysql,以便更好的查看,增加,删除数 ...
-
29、粘包现象(struct模块)
昨天我们所做的套接字是有漏洞的,它会出现粘包现象,没有发现这个问题的我们今天会进行演示.今天也会稍微讲解一下基于udp的套接字. 本篇导航: 基于udp的套接字 粘包现象 粘包 解决粘包方法 stru ...
-
mysql where 条件中的字段有NULL值时的sql语句写法
比如你有一个sql语句联表出来之后是这样的 id name phone status 1 张三 ...
-
Jetty安装配置
1) 从官方网站下载绿色版的jetty 下载地址:http://download.eclipse.org/jetty/ 我下载的是 jetty-distribution-7.5.4.v20111024 ...
-
【BIEE】17_仪表盘提示中值按顺序显示
我们在使用仪表盘提示的时候,常常会遇到这种问题,客户需要将一些常见的放在最上边,这样方便显示 例如:现在有数据库表如下 我们需要在提示中展示机构名称,我们如下新建提示 展示效果如下: 我们从上图可以看 ...
-
POJ3041轰炸行星(匈牙利算法 最小覆盖点集)
Asteroids Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 25232 Accepted: 13625 Descr ...