【appium关键字驱动之三】读取执行excel的数据

上一篇,我们整理了一些操作excel需要使用到的方法,现在我们就可以使用那些方法来识别执行excel里面的关键字了,代码如下:

 

package com.keyword.casestoread;

import io.appium.java_client.android.AndroidDriver;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Logger;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import com.keyword.lib.Common;

/**
 * 执行excel表的用例
 * 
 * @author Administrator
 * 
 */
public class ExcelToRead {

	public static Logger log = Logger.getLogger(ExcelToRead.class.getName());

	public XSSFWorkbook excelwBook;
	public XSSFCell cell;
	public XSSFRow row;
	Common comm = new Common();

	public void readExcel(String path, AndroidDriver driver) {
		String result = "true";
		String actualValue = null;
		XSSFCell cellactual = null;
		try {
			InputStream excelFile = new FileInputStream(path);
			FileOutputStream fileout = null;

			excelwBook = new XSSFWorkbook(excelFile); // 得到工作薄对象

			// 设置单元格的颜色样式(红色)
			XSSFCellStyle style = excelwBook.createCellStyle();
			style.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
			style.setFillForegroundColor(IndexedColors.RED.getIndex());

			// 设置单元格的颜色样式(白色)
			XSSFCellStyle stylewhite = excelwBook.createCellStyle();
			stylewhite.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
			stylewhite.setFillForegroundColor(IndexedColors.WHITE.getIndex());

			XSSFSheet excelwSheet0 = excelwBook.getSheetAt(0);// 获取第一个sheet
			XSSFSheet excelwSheet1 = excelwBook.getSheetAt(1);// 获取第二个sheet

			int rowLength0 = excelwSheet0.getLastRowNum();// 获取第一个sheet的有效行数
			int rowLength1 = excelwSheet1.getLastRowNum();// 获取行数

			for (int i = 1; i <= rowLength1; i++) {

				// 获取定位方式
				Cell cellMode = excelwSheet1.getRow(i).getCell(3);
				String mode = cellMode.getStringCellValue();

				// 获取元素值
				Cell cellElevalue = excelwSheet1.getRow(i).getCell(4);
				String elevalue = cellElevalue.getStringCellValue();

				// 获取操作方法
				Cell cellOper = excelwSheet1.getRow(i).getCell(5);
				String oper = cellOper.getStringCellValue();

				// 获取输入值
				Cell cellValue = excelwSheet1.getRow(i).getCell(6);
				String value = cellValue.getStringCellValue();

				// 获取预期结果
				Cell cellExpected = excelwSheet1.getRow(i).getCell(7);
				String expected = cellExpected.getStringCellValue();

				// 执行用例
				try {
					actualValue = comm.getOpera(mode, elevalue, oper, value,
							expected, driver);
				} catch (Exception e) {
					result = "false";
					continue;
				}

				// 写入用例结果
				row = excelwSheet1.getRow(i);// 得到excel表的行
				cell = row.getCell(9);// 得到excel指定行的单元格(测试结果)

				cellactual = row.getCell(8); // 得到excel指定行的单元格(实际结果)

				// 如果实际结果不为空且预期结果不为无,则将实际结果写入excel,并用实际结果和预期结果进行比较判断测试是否通过
				if (!(actualValue == null) && !(expected.equals("无"))) {
					if (cellactual == null) {
						cellactual = row.createCell(8);// 创建单元格
						cellactual.setCellValue(actualValue);// 设定单元格的值
					} else {
						cellactual.setCellValue(actualValue);
					}

					if (expected.equals(actualValue)) {
						result = "true";
					} else {
						result = "false";
					}
				}

				if (cell == null) {
					cell = row.createCell(9);// 创建单元格
					cell.setCellValue(result);// 设定单元格的值
				} else {
					cell.setCellValue(result);
				}

				// 如果测试结果不通过,则标红,通过则将背景色变为白色
				if (result.equals("false")) {
					cell.setCellStyle(style);
				} else {
					cell.setCellStyle(stylewhite);
				}
			}

			// 将测试结果写入excel
			fileout = new FileOutputStream(path);
			excelwBook.write(fileout);
			fileout.flush();
			fileout.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

通过调用以上类的方法,我们就可以执行excel表格的用例了,现在执行看看

你可能感兴趣的:(appium)