- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想检查工作簿中是否包含工作表名称“Login”。如果存在,那么我想在其中写入数据行=行+1,否则直接写入,然后关闭报告。那么,有人可以让我知道该怎么做吗?我想用下面的方法来做到这一点。
主类:
public class MainClass {
private static final String BROWSER_PATH = "D:\\softs\\FF installed\\FF18\\firefox.exe";
private static final String TEST_SUITE_PATH = "D:\\softs\\configuration\\GmailTestSuite.xls";
private static final String TEST_RESULT = "D:\\softs\\configuration\\TestResult.xls";
private static final String OBJECT_REPOSITORY_PATH = "D:\\softs\\configuration\\objectrepository.xls";
private static final String ADDRESS_TO_TEST = "https://www.gmail.com";
// other constants
private WebDriver driver;
private Properties properties;
/* private WebElement we; */
public MainClass() {
File file = new File(BROWSER_PATH);
FirefoxBinary fb = new FirefoxBinary(file);
driver = new FirefoxDriver(fb, new FirefoxProfile());
driver.get(ADDRESS_TO_TEST);
}
public static void main(String[] args) throws Exception {
MainClass main = new MainClass();
main.handleTestSuite();
}
private void handleTestSuite() throws Exception {
ReadPropertyFile readConfigFile = new ReadPropertyFile();
properties = readConfigFile.loadPropertiess();
ExcelHandler testSuite = new ExcelHandler(TEST_SUITE_PATH, "Suite");
testSuite.columnData();
int rowCount = testSuite.rowCount();
System.out.println("Total Rows=" + rowCount);
for (int i = 1; i < rowCount; i++) {
String executable = testSuite.readCell(
testSuite.getCell("Executable"), i);
System.out.println("Executable=" + executable);
if (executable.equalsIgnoreCase("y")) {
// exe. the process
String scenarioName = testSuite.readCell(
testSuite.getCell("TestScenario"), i);
System.out.println("Scenario Name=" + scenarioName);
handleScenario(scenarioName);
}
}
}
private void handleScenario(String scenarioName) throws Exception {
ExcelHandler testScenarios = new ExcelHandler(TEST_SUITE_PATH);
testScenarios.setSheetName(scenarioName);
testScenarios.columnData();
int rowWorkBook1 = testScenarios.rowCount();
for (int j = 1; j < rowWorkBook1; j++) {
String sno = testScenarios.readCell(
testScenarios.getCell("Sno"), j); // SendKey
String testCaseDescription = testScenarios.readCell(
testScenarios.getCell("TestCaseDescription"), j);
String framWork = testScenarios.readCell(
testScenarios.getCell("FrameworkName"), j);
String operation = testScenarios.readCell(
testScenarios.getCell("Operation"), j); // SendKey
String value = testScenarios.readCell(
testScenarios.getCell("Value"), j);
System.out.println("FRMNameKK=" + framWork + ",Operation="
+ operation + ",Value=" + value);
// handleObjects(operation, value, framWork);
boolean bTestCaseStepStatus = handleObjects(operation, value, framWork);
generateReport(bTestCaseStepStatus,scenarioName,sno,testCaseDescription);
//Report
}
}
private void generateReport(boolean bTestCaseStepStatus, String testSuiteName, String SNO, String testCaseDescription)
throws RowsExceededException, WriteException, IOException
{
//String testReportPath = "D://Chayan//TestExecution.xls";
WritableData writableData= new WritableData(TEST_RESULT, testSuiteName);
//If sheet name is already exist then .... write data at row = row +1
//else write directly .. means row = 1
System.out.println("WRITABLEDATA>>><<<<>>><<>>"+writableData);
writableData.shSheet("Login", 5, 1, "Pass");
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//writableData.shSheet("Login", 5, 2, "Fail");
//driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
// writableData.shSheet("Login", 5, 3, "N/A");
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//Finally .... close the Report file ...
}
private boolean handleObjects(String operation, String value, String framWork)
throws Exception {
//Return true / False
System.out.println("HandleObject--> " + framWork);
ExcelHandler objectRepository = new ExcelHandler(
OBJECT_REPOSITORY_PATH, "OR");
objectRepository.columnData();
int rowCount = objectRepository.rowCount();
System.out.println("Total Rows in hadleObject=" + rowCount);
boolean testStepStatus = false;
for (int k = 1; k < rowCount; k++) {
String frameWorkName = objectRepository.readCell(
objectRepository.getCell("FrameworkName"), k);
String ObjectName = objectRepository.readCell(
objectRepository.getCell("ObjectName"), k);
String Locator = objectRepository.readCell(
objectRepository.getCell("Locator"), k); // SendKey
System.out.println("FrameWorkNameV=" + frameWorkName
+ ",ObjectName=" + ObjectName + ",Locator=" + Locator);
if (framWork.equalsIgnoreCase(frameWorkName)) {
testStepStatus = operateWebDriver(operation, Locator, value, ObjectName);
}
}
return testStepStatus;
}
private boolean operateWebDriver(String operation, String Locator,
String value, String objectName) throws Exception
{
boolean testCaseStep = false;
try {
System.out.println("Operation execution in progress");
WebElement temp = getElement(Locator, objectName);
if (operation.equalsIgnoreCase("SendKey")) {
temp.sendKeys(value);
}
Thread.sleep(1000);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
if (operation.equalsIgnoreCase("Click")) {
temp.click();
}
if (operation.equalsIgnoreCase("Verify")) {
System.out.println("Verify--->" + temp);
temp.isDisplayed();
}
testCaseStep = true;
} catch (Exception e) {
System.out.println("Exception occurred operateWebDriver"+ e.getMessage());
}
return testCaseStep;
}
public WebElement getElement(String locator, String objectName)
throws Exception {
WebElement temp = null;
System.out.println("Locator-->" + locator);
if (locator.equalsIgnoreCase("id")) {
temp = driver.findElement(By.id(objectName));
} else if (locator.equalsIgnoreCase("xpath")) {
temp = driver.findElement(By.xpath(objectName));
System.out.println("xpath temp ----->" + temp);
} else if (locator.equalsIgnoreCase("name")) {
temp = driver.findElement(By.name(objectName));
}
return temp;
}
}
WritablData 类:
public class WritableData {
Workbook wbook;
WritableWorkbook wwbCopy;
String ExecutedTestCasesSheet;
WritableSheet shSheet;
public WritableData(String testSuitePath, String OBJECT_REPOSITORY_PATH) throws RowsExceededException, WriteException
{
// TODO Auto-generated constructor stub
try {
wbook = Workbook.getWorkbook(new File(testSuitePath));
wwbCopy= Workbook.createWorkbook(new File(testSuitePath),wbook);
System.out.println("writable workbookC-->" +wwbCopy);
shSheet=wwbCopy.getSheet("Login");
System.out.println("writable sheetC-->" +shSheet);
//shSheet = wwbCopy.createSheet("Login", 1);
} catch (Exception e) {
// TODO: handle exception
System.out.println("Exception message" + e.getMessage()); e.printStackTrace(); }
}
public void shSheet(String strSheetName, int iColumnNumber, int
iRowNumber, String strData) throws WriteException, IOException {
// TODO Auto-generated method stub
System.out.println("strDataCC---->>" +strData);
System.out.println("strSheetName<<>><<>><<>>" +strSheetName);
WritableSheet wshTemp = wwbCopy.getSheet(strSheetName);
//shSheet=wwbCopy.getSheet("Login");
shSheet=wwbCopy.getSheet(strSheetName);
//String a[][] = new String[shSheet.getRows()][shSheet.getColumns()];
WritableFont cellFont = null;
WritableCellFormat cellFormat = null;
if (strData.equalsIgnoreCase("PASS")) {
cellFont = new WritableFont(WritableFont.TIMES, 12);
cellFont.setColour(Colour.GREEN);
cellFont.setBoldStyle(WritableFont.BOLD);
cellFormat = new WritableCellFormat(cellFont);
cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN); }
else if (strData.equalsIgnoreCase("FAIL")) {
cellFont = new WritableFont(WritableFont.TIMES, 12);
cellFont.setColour(Colour.RED);
cellFont.setBoldStyle(WritableFont.BOLD);
cellFormat = new WritableCellFormat(cellFont);
cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN); }
else { cellFont = new WritableFont(WritableFont.TIMES, 12);
cellFont.setColour(Colour.BLACK);
cellFormat = new WritableCellFormat(cellFont);
cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN);
cellFormat.setWrap(true); }
Label labTemp = new Label(iColumnNumber, iRowNumber, strData,
cellFormat);
shSheet.addCell(labTemp);
System.out.println("writableSheet---->"+shSheet);
wwbCopy.write();
wwbCopy.close();
wbook.close();
}
}
最佳答案
策略:
workbookobj.getNumberOfSheets()---->获取工作簿中的工作表数量
使用 for 循环并迭代工作簿中的所有工作表
workbookobj.getSheet(sheetno).getName()---->返回工作表名称,将其与登录字符串比较,检查工作表名称是否等于登录。
for(int i=0;i<workbookobj.getNumberOfSheets();i++){
if(workbookobj.getSheet(i).getName().contentEquals("login")){
//use Writeableworkbookobj.getSheet(); to return the specific sheet and write the data into the sheet
}else {
//do your stuff
}
}
已编辑:
private void generateReport(boolean bTestCaseStepStatus, String testSuiteName, String SNO, String testCaseDescription)
throws RowsExceededException, WriteException, IOException
{
//Here create an workbook object
Workbook workbookobj = Workbook.getWorkbook(new File(TEST_RESULT));
WritableData writableData= new WritableData(TEST_RESULT, testSuiteName);
for(int i=0;i<workbookobj.getNumberOfSheets();i++){
if(workbookobj.getSheet(i).getName().contentEquals("login")){
if(bTestCaseStepStatus){
writableData.shSheet("Login", 2, j, "Pass");
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
}else{
writableData.shSheet("Login", 2, j, "Fail");
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
}
}else {
//use your writable object to write directly into any sheet
if(bTestCaseStepStatus){
writableData.shSheet(/*write data into any other sheet*/);
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
}else{
writableData.shSheet(/*write data into any other sheet*/);
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
}
}
}
希望这对您有帮助......
关于java - 如何在 selenium webdriver 中使用 JXL 检查工作簿工作表是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30442208/
我的域模型 package sample class Person { String lastName String firstName Date dateOfBirth int numberOfCh
我正在尝试从我的 .csv 文件中获取单元格数据,但出现错误:jxl.read.biff.BiffException: 无法识别 OLE 流 我不知道怎么解决,请给我一些解决方案此代码适用于 jxl
当我使用 jxl 编写 Excel 文件并使用您自己的单元格格式时,我收到此警告:已格式化单元格的最大数量已过期。使用默认格式”。我有大约 350 个单元格需要格式化,这对我来说似乎相对较少。我做错了
如何使用 jxl api 自动调整单元格中的内容? 最佳答案 该方法是不言自明的并评论: private void sheetAutoFitColumns(WritableSheet sheet) {
我的 excel 中有多行,除了第一行外内容都很小。只是为了在顶行插入一个大标题,我不希望后续行的宽度受到影响。有没有一种方法可以将顶行中的内容跨越多列而不影响后续行的宽度。 最佳答案 是的,通过使用
我的 excel 中有多行,除了第一行外内容都很小。只是为了在顶行插入一个大标题,我不希望后续行的宽度受到影响。有没有一种方法可以将顶行中的内容跨越多列而不影响后续行的宽度。 最佳答案 是的,通过使用
优点: Jxl对中文支持非常好,操作简单,方法看名知意。 Jxl是纯javaAPI,在跨平台上表现的非常完美,代码可以再windows或者Linux上运行而无需重新编写 支持Excel 95-
本文整理了Java中jxl.write.WriteException类的一些代码示例,展示了WriteException类的具体用法。这些代码示例主要来源于Github/Stackoverflow/M
本文整理了Java中jxl.write.WritableCell类的一些代码示例,展示了WritableCell类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven
我正在使用 JXL 编写 Excel 报告。我需要为报告使用命名区域,并具有基于它们的公式。但是,加载 Excel 文件时,显示的值不正确。如果我单击单元格并按 Enter 键,则值会发生变化并且是正
JXL 隐藏工作表 我的需求是这样的 我需要创建一个工作表并将其隐藏(使用 JXL API)。 稍后,在程序中,我会将值填充到隐藏工作表中,该工作表是另一个工作表的引用。 有人可以告诉我如何使用 JX
我正在使用jxl将一个小jtable导出到excel,并且我选择JXL API来实现我的目标,一切都很顺利。但我仍然有一个关于数字格式的小问题: 如何添加小数点分隔符,如下例所示: ---------
我正在使用 jxl 创建 Excel 文件。我需要为日期类型单元格设置特定字体。当我编写文本单元格时,很容易做到: WritableFont arial10pt = new WritableFont(
有没有办法使用 JXL 为一系列单元格添加边框?一次为一个单元格设置边框非常繁琐。选择一系列单元格并合并它们可行,但不确定如何一次为一堆单元格设置边框。 最佳答案 有一种方法,先合并单元格,然后给一个
我使用 jxl 将用户输入的数据存储到 Excel 电子表格中。我希望能够在程序运行时关闭程序并打开 Excel 电子表格并查看数据。每当我这样做时,我都会收到一条消息,指出它的格式与文件扩展名中指定
SheetSettings settings = billSheet.getSettings(); settings.setHorizontalFreeze(1); settings.setVerti
我正在使用 JXL 编写 Excel 文件。客户希望某列显示一位小数。他们还希望单元格类型为“数字”。当我使用以下(测试)代码时,数字显示正确,但单元格类型为“自定义”。 File excelFile
您好,我有一个我加载的 excel 模板,我想更改其中的工作表名称。 WritableWorkbook workbook = jxl.Workbook.createWorkbook(file1,tem
在尝试执行以下代码时: Colour selectedColour = Colour.WHITE; myWritableCellFormat.setBackground(selectedColour)
本文整理了Java中jxl.biff.formula.Yylex类的一些代码示例,展示了Yylex类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一
我是一名优秀的程序员,十分优秀!