我正在使用Selenium Java和使用Apache POI的TestNG开发一个POC。我有一个excel表,其中A列包含url,B列包含是否使用相应的url读取/执行的状态(是或否)。我想在C列中保存执行状态pass/fail。
package Read_Write_Excel;
import org.testng.annotations.Test;
import libraries.read_excel_data;
public class read_write_excel
{
String path = "C:\\SeleniumUtilities\\excelData\\TestData.xlsx";
@Test
public void read_excel() throws Exception
{
read_excel_data excel = new read_excel_data(path);
excel.read_data(0);
}
}
package libraries;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class read_excel_data
{
XSSFWorkbook workbook;
XSSFSheet sheet;
String location;
int SheetNo;
write_excel_data write_excel;
public read_excel_data(String excelPath)
{
location = excelPath;
try {
File src = new File(excelPath);
FileInputStream fis = new FileInputStream(src);
workbook = new XSSFWorkbook(fis);
write_excel = new write_excel_data(location);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void read_data(int sheetNumber) throws Exception
{
SheetNo = sheetNumber;
sheet = workbook.getSheetAt(sheetNumber);
int rows = sheet.getLastRowNum();
System.out.println("Total number of Rows to read : "+(rows+1));
for(int i=0;i<=rows;i++)
{
XSSFRow now_row = sheet.getRow(i);
if(now_row.getCell(1).getStringCellValue().equalsIgnoreCase("yes"))
{
String data = now_row.getCell(0).getStringCellValue();
System.out.println("Data from Row "+i+" is: "+data);
String status = assertion.asserting(data);
System.out.println("Status is : "+status);
write_excel.write_data(SheetNo,i,status);
}
}
workbook.close();
}
}
package libraries;
public class assertion
{
public static String asserting(String url)
{
String result;
if(url.contains("com"))
{
result = "Pass";
System.out.println("Result is : "+result);
return result;
}
else
{
result = "Fail";
System.out.println("Result is : "+result);
return result;
}
}
}
package libraries;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class write_excel_data
{
File des;
XSSFSheet sheet;
XSSFWorkbook wb;
public write_excel_data(String location)
{
try {
des = new File(location);
FileInputStream fis = new FileInputStream(des);
wb = new XSSFWorkbook(fis);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void write_data(int sheetNo,int i, String status) throws Exception
{
sheet = wb.getSheetAt(sheetNo);
int rows = sheet.getLastRowNum();
System.out.println("Total number of Rows to write : "+(rows+1));
sheet.getRow(i).createCell(2).setCellValue(status);
FileOutputStream fos = new FileOutputStream(des);
wb.write(fos);
wb.close();
}
}
我面临的问题是:
>
有时我会遇到NullPointerException
[TestNG] Running:
C:\Users\DEDLY\AppData\Local\Temp\testng-eclipse--1619303069\testng-customsuite.xml
Total number of Rows to read : 3
Data from Row 0 is: a.com
Result is : Pass
Status is : Pass
Total number of Rows to write : 3
Data from Row 1 is: b.com
Result is : Pass
Status is : Pass
Total number of Rows to write : 3
[Utils] Attempting to create C:\Users\DEDLY\workspace\SeleniumJavaTestNG\test-output\Default suite\Default test.xml
[Utils] Directory C:\Users\DEDLY\workspace\SeleniumJavaTestNG\test-output\Default suite exists: true
FAILED: read_excel
org.apache.poi.openxml4j.exceptions.OpenXML4JRuntimeException: Rule M2.4 exception : this error should NEVER happen, if so please send a mail to the developers team, thanks !
at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.getContentType(ContentTypeManager.java:342)
at org.apache.poi.openxml4j.opc.internal.ContentTypeManager.removeContentType(ContentTypeManager.java:255)
at org.apache.poi.openxml4j.opc.OPCPackage.removePart(OPCPackage.java:943)
at org.apache.poi.openxml4j.opc.PackagePart.getOutputStream(PackagePart.java:522)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.commit(XSSFWorkbook.java:1546)
at org.apache.poi.POIXMLDocumentPart.onSave(POIXMLDocumentPart.java:332)
at org.apache.poi.POIXMLDocument.write(POIXMLDocument.java:195)
at libraries.write_excel_data.write_data(write_excel_data.java:38)
at libraries.read_excel_data.read_data(read_excel_data.java:51)
at Read_Write_Excel.read_write_excel.read_excel(read_write_excel.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:100)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:646)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:811)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1137)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at org.testng.TestRunner.privateRun(TestRunner.java:753)
at org.testng.TestRunner.run(TestRunner.java:607)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:368)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:363)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:321)
at org.testng.SuiteRunner.run(SuiteRunner.java:270)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1284)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1209)
at org.testng.TestNG.runSuites(TestNG.java:1124)
at org.testng.TestNG.run(TestNG.java:1096)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:236)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:81)
===============================================
Default test
Tests run: 1, Failures: 1, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 1, Failures: 1, Skips: 0
===============================================
更新-2:
只需查看堆栈跟踪,它看起来可能与单元格类型有关(最多的调用是“RemoveContentType”和“getContentType”。我认为这意味着它试图将字符串放入int单元格或不存在的单元格中。
首先,尝试将文本放在C列的三个单元格中的每一个单元格中。如果这样做有效,您可以查看API以查看是否有方法为该单元格设置类型。
如果这不起作用,您可以尝试将最初的电子表格(来自Excel)保存为旧类型。有时Poi在最新的excel版本中不起作用。
有人能帮助创建一个硒TestNgXML文件动态通过Java程序如下格式。 仅对于那些在Excel中标记为yes的测试用例,将从excel文件(这是一个测试套件,控制执行)中读取类名。仅供参考,控制执行(测试套件引擎)的Excel文件包含列TCName、Run(yes/No)和每个测试的类名。
我正在写一个程序,它需要从excel文件中读取和写入数据,而不考虑格式(xls或xlsx)。 我知道ApachePOI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道我将如何实现我在这里的目标。(也欢迎使用POI以外的API的想法)。
我正在写一个程序,通过硒网络驱动程序从一个网站获取数据。我正在努力为我们的项目创造足球装置。到目前为止,我完成了从网站上获取日期和时间、团队名称和分数。还在尝试在txt文件上写,但是在txt文件上写的时候有点乱 如何在excel文件上完成书写和阅读?我想这样写 这是我的部分代码: 写作部分:
问题内容: 我想用3列N行从Java读写Excel文件,在每个单元格中打印一个字符串。谁能给我简单的代码片段吗?我是否需要使用任何外部库,或者Java是否内置支持? 我要执行以下操作: 问题答案: Apache POI可以为你做到这一点。特别是HSSF模块。该快速指南是最有用的。这是你想做什么的方法-专门创建一张纸并将其写出来。
本文向大家介绍通过openpyxl读取excel文件过程解析,包括了通过openpyxl读取excel文件过程解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了通过openpyxl读取excel文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、环境准备 python3环境、安装openpyxl模块 2、excel文件数
本文向大家介绍nodejs读取并去重excel文件,包括了nodejs读取并去重excel文件的使用技巧和注意事项,需要的朋友参考一下 如何使用,直接上代码 解析一下 node-xlsx导出的数据结构如下: 以上就是小编整理的全部内容,很多时候我们用到对EXCEL的文件操作,大家在测试的时候如还有任何疑问可以在下面的留言区讨论,感谢大家对呐喊教程的支持。