java - 将 Web 元素导入 Excel 时出现空指针异常

标签 java selenium apache-poi

我陷入了空指针异常问题。测试是通过JUnit运行的,但我没能正确调试并找出原因。

测试类

ExcelActions excelActions;
Excel_Import excel_import;

@Test
public void addResultsToExcel() throws InterruptedException {
    searchAfterLogin(); // works fine until the next method
    excelActions.addToExcel();  //thats where NPE begins...
    excel_import.importExcel(excelActions.addToExcel());

}

Excel 操作(Webdriver 部分)

public class ExcelActions extends BaseAction {

public ExcelActions(WebDriver driver) { super(driver); }

public Map<String, Object[]> addToExcel(){

    String beforeXpath_pageName = "//*[@id=\"mw-content- 
text\"]/div[3]/ul/li[";
    String afterXpath_pageName = "]/div[1]/a";

    int rowCount ;
    rowCount = 20;
    Map<String, Object[]> data = new TreeMap<String, Object[]>();

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

        String actualXpath_pageName = beforeXpath_pageName + i + 
afterXpath_pageName;
        String pageName = 
driver.findElement(By.xpath(actualXpath_pageName)).getText();
        System.out.println(pageName);

        data.put("" + i, new Object[]{pageName});
    }
    return data;
}
}

Excel导入类

public class Excel_Import extends BaseAction {

    public Excel_Import(WebDriver driver) { super(driver); }

public void importExcel(Map<String, Object[]> data) {
    XSSFWorkbook workbook = new XSSFWorkbook();

    //Create a blank sheet
    XSSFSheet sheet = workbook.createSheet("Data");

    //Iterate over data and write to sheet
    Set<String> keyset = data.keySet();

    int rownum = 0;
    for (String key : keyset)
    {
        //create a row of excel sheet
        Row row = sheet.createRow(rownum++);

        //get object array of particular key
        Object[] objArr = data.get(key);

        int cellnum = 0;

        for (Object obj : objArr)
        {
            Cell cell = row.createCell(cellnum++);
            if (obj instanceof String)
            {
                cell.setCellValue((String) obj);
            }
            else if (obj instanceof Integer)
            {
                cell.setCellValue((Integer) obj);
            }
        }
    }
    try
    {
        //Write the workbook in file system
        FileOutputStream out = new FileOutputStream(new 
File("D:\\Projects\\Cucumber\\src\\main\\resources\\ImportedResults.xlsx"));
        workbook.write(out);
        out.close();
        System.out.println("howtodoinjava_demo.xlsx written successfully on 
disk.");
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}
}

你们能看一下吗?

最佳答案

字段:

ExcelActions excelActions;

未初始化。您应该为其分配一个 ExcelActions 实例,例如:

ExcelActions excelActions = new ExcelActions(someWebDriverMock);

在类中声明一个字段是不够的。您需要为其分配一些特定的对象,否则它将为 null

关于java - 将 Web 元素导入 Excel 时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53297393/

相关文章:

java - jframe配置与mySQL连接关系

java - 需要使用 Java/Selenium 或任何语言从 Google TAG 管理器中提取数据层信息 - 用于自动化目的

java - 如何使用 apache POI 从 excel 读取下拉列表值?

java - Apache POI 注释 Excel

java - 将 POI 与 gradle 一起使用时出现重复输入错误

java - 有没有一种简单的方法在 Java 中使用 OpenSSL BIO 对象,或者有其他选择吗?

java - spring mvc 框架上的流式 api 问题

java - 如何在java vertx中编写自己的异步处理程序

Selenium - 不支持在常规用户 session 中以 root 身份运行 Firefox

java - 如何通过 Selenium-Java 连接到 putty 来执行命令集并验证 putty 窗口中的输出