有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法使用Selenium webdriver写入Excel

我已经创建了一个测试,在这个测试中,我从excel中读取数据,并在工作表中迭代,以处理web门户中的应用程序。这是预期的工作

不过,我现在正试图将网页中的结果写入同一excel上的另一个工作表中。我运行的测试用例在Eclipse中通过,但没有数据写入指定的工作表。(我还希望在结果表上迭代以捕获多个应用程序记录,但还没有谈到这一部分)

请参阅下面我的测试脚本和我在ExcelConfig util工作表中创建的方法。希望有人能告诉我哪里出了问题,提前谢谢

史蒂夫

测试用例

package com.htb.puma.uatTests;

import org.junit.Test;
import org.openqa.selenium.WebDriver;
import com.htb.puma.pages.SMcaseHeader;
import com.htb.puma.pages.SMhome;
import com.htb.puma.pages.SMloanDetails;
import com.htb.puma.pages.SMlogin;
import com.htb.puma.pages.SetUpConfig;
import com.htb.puma.util.ExcelConfig;
import org.openqa.selenium.Keys;
import org.openqa.selenium.NoAlertPresentException;
import java.io.File;
import java.io.IOException;

public class THAM_WRITE_Test {

    WebDriver driver;

    @Test
    public void specMortHome() throws NoAlertPresentException, InterruptedException, IOException {

        // calling drivers from the SetUpConfig page

        driver = SetUpConfig.getChromeDriver();
        // driver = SetUpConfig.getFirefoxDriver();
        // driver = SetUpConfig.getIEDriver();

        String path = new File("src/test/resources/TestData.xlsx").getAbsolutePath();

        ExcelConfig excel = new ExcelConfig(path);

        int row = 1;
        while (excel.getData("PDFRollUp", row, 0) != "") {

            String loanAmReq = excel.getNumericData("PDFRollUp", row, 6);

            // LOGIN

            SMlogin specMortLogin = new SMlogin(driver);
            specMortLogin.openSMlogin();
            specMortLogin.maximiseWindow();

            specMortLogin.enterUsername("OpsAdminAuto");
            specMortLogin.enterPassword("AutoOps123!");
            specMortLogin.clickSignInBtn();

            Thread.sleep(2000);

            SMhome specMortHome = new SMhome(driver);

            specMortHome.clickTopMC();

            Thread.sleep(2000);

            SMcaseHeader specMortCaseHeader = new SMcaseHeader(driver);

            specMortCaseHeader.clickLoanDetailsTab();

            SMloanDetails specMortLoanDetails = new SMloanDetails(driver);

            Thread.sleep(2000);

            specMortLoanDetails.enterLoanAmReq(Keys.CONTROL + "a"); // PDF
            specMortLoanDetails.enterLoanAmReq(loanAmReq); // PDF

            String erc = specMortLoanDetails.getERC();
            String ltv = specMortLoanDetails.getLTV();

            excel.createFile("src/test/resources/TestData.xlsx");
            excel.writeStringData("Results", 1, 1, erc);
            excel.writeStringData("Results", 1, 2, ltv);

            specMortHome.clickUserActionsHomeLM();
            specMortHome.clickLogoutHomeLM();

            row++;

        }
        driver.quit();
    }

}

Excel配置

package com.htb.puma.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;

public class ExcelConfig {

    public XSSFWorkbook wb;
    XSSFSheet sheet1;

    public ExcelConfig(String Excelpath) {

        File src = new File(Excelpath);
        try {
            FileInputStream fis = new FileInputStream(src);
            wb = new XSSFWorkbook(fis);

        } catch (Exception e) {
            System.out.println("Excel file not loaded");
        }

    }

    // reads the string in the excel file
    public String getData(String sheetName, int row, int column) {
        sheet1 = wb.getSheet(sheetName);
        String data = "";

        try {
            data = sheet1.getRow(row).getCell(column).getStringCellValue();
        } catch (NullPointerException e) {
            data = "";
        }
        return data;
    }

    // reads the number in the excel file
    public String getNumericData(String sheetName, int row, int column) {

        sheet1 = wb.getSheet(sheetName);
        String data = "";

        try {
            // data = sheet.getRow(row).getCell(column).getRawValue();
            DataFormatter dataFormatter = new DataFormatter();
            Cell cell = sheet1.getRow(row).getCell(column);
            data = dataFormatter.formatCellValue(cell);
        } catch (NullPointerException e) {
            data = "";
        }
        return data;
    }

//write string data into excel
public void writeStringData(String sheetName, int row, int column, String data) {
    sheet1 = wb.getSheet(sheetName);

    Row valueRow = sheet1.getRow(row);
    Cell valueCell = valueRow.createCell(column);

    if (data.equals("FAILED")) {
        CellStyle style = wb.createCellStyle();
        Font font = wb.createFont();
        //font.setColor(HSSFColor.RED.index);
        style.setFont(font);
        valueCell.setCellValue(data);
        valueCell.setCellStyle(style);
    }

    valueCell.setCellValue(data);

}

//creates an excel file
public void createFile(String path) {
    File src = new File(path);
    try {
        FileOutputStream outputStream = new FileOutputStream(src);
        try {
            wb.write(outputStream);
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

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

}

共 (1) 个答案

  1. # 1 楼答案

    write(java.io.OutputStream)用于将数据写入excel文件

    public void writeStringData(String sheetName, int row, int column, String data) {
    
    try {
        sheet1 = wb.getSheet(sheetName);
        Row valueRow = sheet1.getRow(row);
        Cell valueCell = valueRow.createCell(column);
    
        if (data.equals("FAILED")) {
            CellStyle style = wb.createCellStyle();
            Font font = wb.createFont();
            //font.setColor(HSSFColor.RED.index);
            style.setFont(font);
            valueCell.setCellValue(data);
            valueCell.setCellStyle(style);
        }
    
        valueCell.setCellValue(data);
    
        FileOutputStream fout;
        fout = new FileOutputStream(new File("<path>"));
        //fout = new FileOutputStream("src/test/resources/TestData.xlsx" );
        wb.write(fout);
        // fout.flush();
        wb.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (EncryptedDocumentException e) {
        e.printStackTrace();
    } catch (NullPointerException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    }