Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium Java-将hashmap值写入excel_Java_Excel_Selenium Webdriver - Fatal编程技术网

Selenium Java-将hashmap值写入excel

Selenium Java-将hashmap值写入excel,java,excel,selenium-webdriver,Java,Excel,Selenium Webdriver,我试图使用hashmap值在excel文件中写入testcase状态,但它没有将数据写入excel。这是我的密码- public void readData() throws Exception { String filePath = System.getProperty("user.dir") + "\\Test Data"; String fileName = "editSubscriptions.xls"; String sheetName = "datap

我试图使用hashmap值在excel文件中写入testcase状态,但它没有将数据写入excel。这是我的密码-

    public void readData() throws Exception {
    String filePath = System.getProperty("user.dir") + "\\Test Data";
    String fileName = "editSubscriptions.xls";
    String sheetName = "datapool";

    File file = new File(filePath + "\\" + fileName);
    FileInputStream fis = new FileInputStream(file);
    Workbook workbook = null;

    String fileExtName = fileName.substring(fileName.indexOf("."));

    if (fileExtName.equals(".xlsx")) {
        workbook = new XSSFWorkbook(fis);
    } else if (fileExtName.equals(".xls")) {
        workbook = new HSSFWorkbook(fis);
    }
    Sheet sheet = workbook.getSheet(sheetName);
    int rowCount = sheet.getLastRowNum() - sheet.getFirstRowNum();
    HashMap<String, String> hm = new HashMap<String, String>();
    for (int i = 1; i < rowCount + 1; i++) {
        Row row = sheet.getRow(i);
        for (int j = 1; j < row.getLastCellNum(); j++) {
            System.out.println(row.getCell(j).getStringCellValue());
            driver.findElement(By.linkText("Login")).click();
            WebDriverWait wait = new WebDriverWait(driver, 10);
            wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("username")));
            driver.findElement(By.id("username")).sendKeys(row.getCell(0).toString());
            driver.findElement(By.id("password")).sendKeys(row.getCell(1).toString());
            driver.findElement(By.name("submit")).click();
            Thread.sleep(10000);
            try {
                driver.findElement(By.linkText("Logout")).click();
                WebDriverWait wait1 = new WebDriverWait(driver, 10);
                wait1.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("Login")));
                hm.put(row.getCell(0).toString(), "Pass");
            } catch (Exception ex) {
                hm.put(row.getCell(0).toString(), "Fail");
                driver.get("http://www.openclinica.com");
            }
        }
    }
    Set<String> keys = hm.keySet();
    for (String key: keys){
        System.out.println("Value of "+key+" is: "+hm.get(key));

        String filePath1 = System.getProperty("user.dir") + "\\Test Data";
        String fileName1 = "editSubscriptions1.xls";
        String sheetName1 = "datapool";

        File file1 = new File(filePath1 + "\\" + fileName1);
        FileInputStream fis1 = new FileInputStream(file1);
        Workbook workbook1 = null;

        String fileExtName1 = fileName1.substring(fileName1.indexOf("."));

        if (fileExtName1.equals(".xlsx")) {
            workbook1 = new XSSFWorkbook(fis1);
        } else if (fileExtName1.equals(".xls")) {
            workbook1 = new HSSFWorkbook(fis1);
        } 
        Sheet sheet1 = workbook1.getSheet(sheetName1);
        int rowCount1 = sheet1.getLastRowNum() - sheet1.getFirstRowNum();

        for (int i=1; i < rowCount1; i++){
            Cell cell = sheet1.getRow(i).createCell(2);
            cell.setCellType(Cell.CELL_TYPE_STRING);
            cell.setCellValue(hm.put(key, hm.get(key)));
        }
    }
}
public void readData()引发异常{
字符串filePath=System.getProperty(“user.dir”)+“\\testdata”;
字符串fileName=“editSubscriptions.xls”;
字符串sheetName=“数据池”;
文件文件=新文件(文件路径+“\\”+文件名);
FileInputStream fis=新的FileInputStream(文件);
工作簿=空;
字符串fileExtName=fileName.substring(fileName.indexOf(“.”);
if(fileExtName.equals(“.xlsx”)){
工作簿=新XSSF工作簿(fis);
}else if(fileExtName.equals(“.xls”)){
工作簿=新的HSSF工作簿(fis);
}
Sheet Sheet=工作簿.getSheet(sheetName);
int rowCount=sheet.getLastRowNum()-sheet.getFirstRowNum();
HashMap hm=新的HashMap();
对于(int i=1;i
我想通过使用hashmap键将状态添加到excel工作表中。我可以在控制台中打印状态,但这不会转换为excel工作表

HemaSai的值为:Fail MoulikaNimmala的价值为:通过 Keshav的值为:失败

请帮我解决这个问题

提前感谢您。

int rowCount1=sheet1.getLastRowNum()-sheet1.getFirstRowNum();
int rowCount1 = sheet1.getLastRowNum() - sheet1.getFirstRowNum();

    for (int i=1; i < rowCount1; i++){
        Cell cell = sheet1.getRow(i).createCell(2);
        cell.setCellType(Cell.CELL_TYPE_STRING);
        cell.setCellValue(hm.put(key, hm.get(key)));
    }
对于(int i=1;i
循环应该从索引0开始,根据

看起来您永远不会进入循环,因为您从索引1开始,但如果您从空工作表开始,则行数的初始值为0

编辑:在评论之后,我会选择这样的解决方案(未经测试!)

Set keys=hm.keySet();
字符串filePath1=System.getProperty(“user.dir”)+“\\testdata”;
字符串fileName1=“editSubscriptions1.xls”;
字符串sheetName1=“数据池”;
文件file1=新文件(filePath1+“\\”+fileName1);
FileInputStream fis1=新的FileInputStream(file1);
工作簿工作簿1=null;
字符串fileExtName1=fileName1.substring(fileName1.indexOf(“.”);
if(fileExtName1.equals(“.xlsx”)){
工作簿1=新XSSF工作簿(fis1);
}else if(fileExtName1.equals(“.xls”)){
工作簿1=新的HSSF工作簿(fis1);
} 
Sheet sheet1=工作簿1.getSheet(sheetName1);
int rowCount1=sheet1.getLastRowNum()-sheet1.getFirstRowNum()//将rowNumber设置为已设置的最后一个
对于(字符串键:键){//对于每个键,在第1列中写入名称,在第2列中写入结果
rowcount1++;//从下一个空闲行开始
Cell cell1=sheet1.createRow(rowCount1.createCell(1);
Cell cell2=sheet1.getRow(rowCount1.createCell(2);
cell1.setCellType(Cell.Cell\u TYPE\u字符串);
cell2.setCellType(Cell.Cell\u TYPE\u字符串);
cell1.setCellValue(键));
cell2.setCellValue(hm.get(key));
}
}

excelFile中的结果是什么?用户名密码结果MoulikaNimmala$Ai11081988 HemaSai sai11081988 Keshav SAI30041990这是一行吗?我现在无法想象这些是哪一行,哪一个是cellsusername(0,0)MoulikaNimmala(1,0)HemaSai(2,0)Keshav(3,0)password(0,1)$Ai11081988(1,1)sai11081988(2,1)sai30041990(3,1)result(0,2)fail(1,2)pass(2,2)fail(3,2)我故意使用索引从1开始,因为excel文件中的第0列命名为结果/状态。因此,我希望状态从第1行第2列开始,通过或失败,但据我所知,您就是它
 Set<String> keys = hm.keySet();
String filePath1 = System.getProperty("user.dir") + "\\Test Data";
    String fileName1 = "editSubscriptions1.xls";
    String sheetName1 = "datapool";

    File file1 = new File(filePath1 + "\\" + fileName1);
    FileInputStream fis1 = new FileInputStream(file1);
    Workbook workbook1 = null;

    String fileExtName1 = fileName1.substring(fileName1.indexOf("."));

    if (fileExtName1.equals(".xlsx")) {
        workbook1 = new XSSFWorkbook(fis1);
    } else if (fileExtName1.equals(".xls")) {
        workbook1 = new HSSFWorkbook(fis1);
    } 
    Sheet sheet1 = workbook1.getSheet(sheetName1);
    int rowCount1 = sheet1.getLastRowNum() - sheet1.getFirstRowNum(); //set rowNumber to the last already set one
for (String key: keys){ //for every key write the name in column 1 and the result in column 2
    rowcount1++; //start at the next free row

    Cell cell1 = sheet1.createRow(rowCount1).createCell(1);
        Cell cell2 = sheet1.getRow(rowCount1).createCell(2);
        cell1.setCellType(Cell.CELL_TYPE_STRING);
        cell2.setCellType(Cell.CELL_TYPE_STRING);
        cell1.setCellValue(key));
        cell2.setCellValue(hm.get(key)));
    }
}