标签:
package testNG;
import java.awt.Desktop;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.xml.crypto.Data;
import org.apache.commons.io.FileUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
@SuppressWarnings("unused")
public class BaseClass {
/***
* 基础类,包括方法:获取基础数据、获取测试数据、返回当前时间、
* 写入测试结果文件、截图、打开结果文件、去除空格换行及制表符的字符串
* @param args
* @throws IOException
* @throws InterruptedException
*/
//读取测试URL、测试数据文件路径和结果文件路径
public String getBaseData(String testInfo, String baseDataPath) throws IOException{
/**
* FunName: getBaseData
* Description : 获取测试URL、测试数据文件路径和结果文件路径
* @param: String testInfo
* @return String: 返回基础数据字符串;
* @Author: Bingo
* @Create Date: 2015-06-29
**/
String testString = null;
FileInputStream file = new FileInputStream(baseDataPath);
@SuppressWarnings("resource")
XSSFWorkbook wb = new XSSFWorkbook(file);
XSSFSheet sheet = wb.getSheetAt(0);
XSSFRow rowinf = sheet.getRow(1);
if(testInfo == "inPath"){
Cell cell = rowinf.getCell(0);
cell.setCellType(Cell.CELL_TYPE_STRING);
testString= cell.getStringCellValue();
}
else if(testInfo == "outPath"){
Cell cell = rowinf.getCell(1);
cell.setCellType(Cell.CELL_TYPE_STRING);
testString= cell.getStringCellValue();
}
else if(testInfo == "baseURL"){
Cell cell = rowinf.getCell(2);
cell.setCellType(Cell.CELL_TYPE_STRING);
testString= cell.getStringCellValue();
}
else if(testInfo == "firefoxPath"){
Cell cell = rowinf.getCell(3);
cell.setCellType(Cell.CELL_TYPE_STRING);
testString= cell.getStringCellValue();
}
else if(testInfo == "screenShotDir"){
Cell cell = rowinf.getCell(4);
cell.setCellType(Cell.CELL_TYPE_STRING);
testString= cell.getStringCellValue();
}
//验证码截图
else if(testInfo == "snapshotDir"){
Cell cell = rowinf.getCell(5);
cell.setCellType(Cell.CELL_TYPE_STRING);
testString= cell.getStringCellValue();
}
else if(testInfo == "xiaoWeiIssuerURL"){
Cell cell = rowinf.getCell(6);
cell.setCellType(Cell.CELL_TYPE_STRING);
testString= cell.getStringCellValue();
}
return testString;
}
//读取信息,被测试方法调用,参数为方法名、列名colNm、文件路径inPath
public String getData_xlsx(String funNm, String colNm, String inPath) throws FileNotFoundException, IOException{
/**
* FunName: getData_xlsx
* Description : 读取信息,供被测试方法调用
* @param: String funNm, String colNm, String inPath
* @return String: 返回测试数据;
* @Author: Bingo
* @Create Date: 2015-06-29
**/
String str1 = null;
FileInputStream file = new FileInputStream(inPath);
@SuppressWarnings("resource")
XSSFWorkbook wb = new XSSFWorkbook(file);
XSSFSheet sheet = null;
//根据方法名,读取对应的sheet
if (funNm == "Login"){
sheet = wb.getSheetAt(1);
} else if (funNm == "QueryApp"){
sheet = wb.getSheetAt(2);
}
XSSFRow row1 = sheet.getRow(1);
//根据不同的列名,读取对应的列
if(colNm == "orgz"){
Cell cell = row1.getCell(0);
cell.setCellType(Cell.CELL_TYPE_STRING);
str1= cell.getStringCellValue();
}
else if(colNm == "userId"){
Cell cell = row1.getCell(1);
cell.setCellType(Cell.CELL_TYPE_STRING);
str1= cell.getStringCellValue();
}
else if(colNm == "pwd"){
Cell cell = row1.getCell(2);
cell.setCellType(Cell.CELL_TYPE_STRING);
str1= cell.getStringCellValue();
}
else if(colNm == "appNo"){
Cell cell = row1.getCell(0);
cell.setCellType(Cell.CELL_TYPE_STRING);
str1= cell.getStringCellValue();
}
else if(colNm == "holName"){
Cell cell = row1.getCell(1);
cell.setCellType(Cell.CELL_TYPE_STRING);
str1= cell.getStringCellValue();
}
else if(colNm == "cerType"){
Cell cell = row1.getCell(2);
cell.setCellType(Cell.CELL_TYPE_STRING);
str1= cell.getStringCellValue();
}
else if(colNm == "cerNo"){
Cell cell = row1.getCell(3);
cell.setCellType(Cell.CELL_TYPE_STRING);
str1= cell.getStringCellValue();
}
else if(colNm == "xiaoWeiUserId"){
Cell cell = row1.getCell(3);
cell.setCellType(Cell.CELL_TYPE_STRING);
str1= cell.getStringCellValue();
}
else if(colNm == "xiaoWeiUserPwd"){
Cell cell = row1.getCell(4);
cell.setCellType(Cell.CELL_TYPE_STRING);
str1= cell.getStringCellValue();
}
return str1;
}
//写入测试结果文件,参数为方法名、是否通过、文件路径和执行时间
public void outCome_xlsx(String funNm, String outCome, String outPath,String date) throws IOException
{
/**
* FunName: outCome_xlsx
* Description : 写入测试结果
* @param: String funNm, String outCome, String outPath,String date
* @return void: 无返回数据;
* @Author: Bingo
* @Create Date: 2015-06-29
**/
FileInputStream file = new FileInputStream(outPath);
@SuppressWarnings("resource")
XSSFWorkbook wb = new XSSFWorkbook(file);
XSSFSheet sheet = wb.getSheetAt(0);
int trLength = sheet.getLastRowNum();
XSSFRow newrow = sheet.createRow((short)(trLength+1));
newrow.createCell(0).setCellValue(funNm);
newrow.createCell(1).setCellValue(outCome);
newrow.createCell(2).setCellValue(date);
FileOutputStream fout = new FileOutputStream(outPath);
wb.write(fout);
file.close();
fout.close();
}
public void openOutCome(String outPath){
/**
* FunName: openOutCome
* Description : 打开测试结果文件
* @param: 文件URL
* @return void: 无返回数据;
* @Author: Bingo
* @Create Date: 2015-06-30
**/
Desktop desk=Desktop.getDesktop();
try
{
File file1=new File(outPath);//创建一个java文件系统
if (!file1.canWrite())//判断文件是否被占用
{
desk.open(file1); //调用open(File f)方法打开文件
}else {
FileInputStream in=new FileInputStream(file1);
in.close();
desk.open(file1);
}
}catch(Exception e)
{
System.out.println(e.toString());
}
}
public void screenShot(String screenOutDir,WebDriver driver,String funNm) throws InterruptedException{
/**
* FunName: screenShot
* Description : 截图
* @param: 文件URL
* @return void: 无返回数据;
* @Author: Bingo
* @Create Date: 2015-06-30
**/
//Thread.sleep(3000);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HHmmss-SSS");
String time = sdf.format(new Date());
String fileName = funNm+time +".png";
try {
File source_file = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); // 执行屏幕截图
FileUtils.copyFile(source_file, new File(screenOutDir + "/" + fileName)); // 另存到我们需要保存的目录,例如screenshot\20150706 165210-333.png
} catch (IOException e) {
e.printStackTrace();
}
}
public static String replaceBlank(String str) {
/**
* 返回STR中去除空格、换行制表符的内容
*
*/
String dest = "";
if (str!=null) {
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(str);
dest = m.replaceAll("");
}
return dest;
}
//获取当前系统时间
public String nowDate(){
String nowDate = null;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
nowDate =df.format(new Date()).toString();
return nowDate;
}
//判断字符串是否包含字母
public boolean isContentLetter(String s){
for(int i =0; i<s.length()-1;i++){
if(Character.isDigit(s.charAt(i))){
return false;
}
}
return true;
}
public static void main(String[] args) throws IOException, InterruptedException {
// TODO 自动生成的方法存根
BaseClass baseClass = new BaseClass();
String baseDatePath = "about:blank";
String inPath = baseClass.getBaseData("inPath",baseDatePath);
String outPath = baseClass.getBaseData("outPath",baseDatePath);
String baseURL = baseClass.getBaseData("baseURL",baseDatePath);
String firefoxPath = baseClass.getBaseData("firefoxPath",baseDatePath);
String orgz = baseClass.getData_xlsx("Login", "orgz", inPath);
String userId = baseClass.getData_xlsx("Login", "userId", inPath);
String pwd = baseClass.getData_xlsx("Login", "pwd", inPath);
String appNo = baseClass.getData_xlsx("QueryApp", "appNo", inPath);
String holName = baseClass.getData_xlsx("QueryApp", "holName", inPath);
String cerType = baseClass.getData_xlsx("QueryApp", "cerType", inPath);
String cerNo = baseClass.getData_xlsx("QueryApp", "cerNo", inPath);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String date =df.format(new Date());
baseClass.outCome_xlsx("测试方法", "是否通过", outPath, date);
System.out.println("inPath:"+inPath+"\noutPath:"+outPath+"\nbaseURL:"+baseURL+"\nfirefoxPath"+firefoxPath);
System.out.println("\norgz:"+orgz+"\nuserId:"+userId+"\npwdL:"+pwd+"\nappNo"+appNo);
System.out.println("\nholName:"+holName+"\ncerType:"+cerType+"\ncerNo:"+cerNo);
baseClass.openOutCome(outPath);
WebDriver driver = new FirefoxDriver();
Thread.sleep(3000);
String screenShotDir = baseClass.getBaseData("screenShotDir",baseDatePath);
Thread.sleep(3000);
baseClass.screenShot(screenShotDir, driver,"testFunNm");
driver.close();
}
}
标签:
原文地址:http://www.cnblogs.com/tuanfuyao/p/Selenium-WebTest-BaseClass.html