如何在SeleniumWebDriver和java中使用ApachePOI在excel文件中创建新工作表

如何在SeleniumWebDriver和java中使用ApachePOI在excel文件中创建新工作表,java,excel,selenium-webdriver,apache-poi,Java,Excel,Selenium Webdriver,Apache Poi,我正在使用SeleniumWebDriver-Java。 我需要将测试用例的结果写入excel文件,我使用了ApachePOI。我成功地创建了一个excel文件,并将测试用例“注册”的结果写入其中。现在我想将testcase“Login”的结果写入同一excel文件中的另一个工作表。 如何将新工作表添加到excel文件并写入其中? 我会解释得更清楚。我有3个类:QZO.java,QZO\u Registration.java和QZO Login.java。 -java包含不同的注册测试用例。 -

我正在使用SeleniumWebDriver-Java。
我需要将测试用例的结果写入excel文件,我使用了ApachePOI。我成功地创建了一个excel文件,并将测试用例“注册”的结果写入其中。现在我想将testcase“Login”的结果写入同一excel文件中的另一个工作表。 如何将新工作表添加到excel文件并写入其中? 我会解释得更清楚。我有3个类:
QZO.java
QZO\u Registration.java
QZO Login.java
。 -java包含不同的注册测试用例。 -QZO_登录包含不同的登录测试用例。 -java包含一些常用于QZO_注册和QZO_登录的函数。 -QZO.java包含在类中创建2张工作表的代码
sheet1=workbook.createSheet(“TestResult_注册”)<代码> sheet2=workbook.createSheet(“TestResult_注册”) 当我运行QZO_注册类时,会创建一个excel文件,其中包含两张表格TestResult_注册和TestResult_登录。 注册测试用例的结果写在TestResult\u注册表中。 但是当我运行类QZO_Login时,工作表TestResult_注册中的值被清除

QZO_Registration.java

package User;
import java.io.IOException;
import junit.framework.Assert;
import jxl.read.biff.BiffException;
import org.openqa.selenium.WebElement;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

@SuppressWarnings("deprecation")
public class QZO_Registration extends QZO {

    @BeforeTest
    public void beforeTest() throws BiffException, IOException,InterruptedException {
        openBrowser(1);
        input(properties.getProperty("VAR_REGISTRATIONDETAILS"));
    }
    /* Registration without entering email */
    @Test(priority = 0)
    public void registrationWithoutEmail() throws InterruptedException {
        try {
            int emptyEmailRowNumber = 1;
            WebElement registration = webElement("VAR_REGISTRATION");
            registration.click();
            Thread.sleep(1000);
            WebElement email = webElement("VAR_REGISTRATION_EMAIL");
            email.clear();
            email.sendKeys(getCellContent(0, emptyEmailRowNumber));
            Thread.sleep(1000);
            WebElement username = webElement("VAR_REGISTRATION_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(1, emptyEmailRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_REGISTRATION_PASSWORD");
            password.clear();
            password.sendKeys(getCellContent(2, emptyEmailRowNumber));
            Thread.sleep(1000);
            WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD");
            confirmPassword.clear();
            confirmPassword.sendKeys(getCellContent(3, emptyEmailRowNumber));
            Thread.sleep(1000);
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(1000);
            WebElement errorText = webElement("VAR_ERRORTEXT");
            String message = errorText.getText();
            Assert.assertEquals("Error! Please enter email", message);
            testresultdata.put("2", new Object[] { 1d, "Registration","Registration without entering email","Should show an error message","An error message is shown", "Pass" });
        } catch (Exception e) {
            testresultdata.put("2", new Object[] { 1d, "Registration","Registration without entering email","Should show an error message","Error message is not shown", "Fail" });
        }   }
    /* Registration without entering username */
    @Test(priority = 1)
    public void registrationWithoutUsername() throws InterruptedException { 
        try {
            int emptyUsernameRowNumber = 2;
            WebElement registration = webElement("VAR_REGISTRATION");
            registration.click();
            Thread.sleep(1000);
            WebElement email = webElement("VAR_REGISTRATION_EMAIL");
            email.clear();
            email.sendKeys(getCellContent(0, emptyUsernameRowNumber));
            Thread.sleep(1000);
            WebElement username = webElement("VAR_REGISTRATION_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(1, emptyUsernameRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_REGISTRATION_PASSWORD");
            password.clear();
            password.sendKeys(getCellContent(2, emptyUsernameRowNumber));
            Thread.sleep(1000);
            WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD");
            confirmPassword.clear();
            confirmPassword.sendKeys(getCellContent(3, emptyUsernameRowNumber));
            Thread.sleep(1000);
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(1000);
            WebElement errorText = webElement("VAR_ERRORTEXT");
            String message = errorText.getText();
            Assert.assertEquals("Error! Enter username", message);
            testresultdata.put("3", new Object[] { 2d, "Registration","Registration without entering username","Should show an error message","An error message is shown", "Pass" });
        } catch (Exception e) {
            testresultdata.put("3", new Object[] { 2d, "Registration","Registration without entering username","Should show an error message","Error message is not shown", "Fail" });
        }}
    /* Registration without entering password */
    @Test(priority = 2)
    public void registrationWithoutPassword() throws InterruptedException { 
        try {
            int emptyPasswordRowNumber = 3;
            WebElement registration = webElement("VAR_REGISTRATION");
            registration.click();
            Thread.sleep(1000);
            WebElement email = webElement("VAR_REGISTRATION_EMAIL");
            email.clear();
            email.sendKeys(getCellContent(0, emptyPasswordRowNumber));
            Thread.sleep(1000);
            WebElement username = webElement("VAR_REGISTRATION_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(1, emptyPasswordRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_REGISTRATION_PASSWORD");
            password.clear();
            password.sendKeys(getCellContent(2, emptyPasswordRowNumber));
            Thread.sleep(1000);
            WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD");
            confirmPassword.clear();
            confirmPassword.sendKeys(getCellContent(3, emptyPasswordRowNumber));
            Thread.sleep(1000);
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(1000);
            WebElement errorText = webElement("VAR_ERRORTEXT");
            String message = errorText.getText();
            Assert.assertEquals("Error! Enter password", message);
            testresultdata.put("4", new Object[] { 3d, "Registration","Registration without entering password","Should show an error message","An error message is shown", "Pass" });
        } catch (Exception e) {
            testresultdata.put("4", new Object[] { 3d, "Registration","Registration without entering password","Should show an error message","Error message is not shown", "Fail" });
        }   }
    /* Registration without entering confirmpassword */
    @Test(priority = 3)
    public void registrationWithoutConfirmPassword()throws InterruptedException {       
        try {
            int emptyConfirmPasswordRowNumber = 4;
            WebElement registration = webElement("VAR_REGISTRATION");
            registration.click();
            Thread.sleep(1000);
            WebElement email = webElement("VAR_REGISTRATION_EMAIL");
            email.clear();
            email.sendKeys(getCellContent(0, emptyConfirmPasswordRowNumber));
            Thread.sleep(1000);
            WebElement username = webElement("VAR_REGISTRATION_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(1, emptyConfirmPasswordRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_REGISTRATION_PASSWORD");
            password.clear();
            password.sendKeys(getCellContent(2, emptyConfirmPasswordRowNumber));
            Thread.sleep(1000);
            WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD");
            confirmPassword.clear();        confirmPassword.sendKeys(getCellContent(3,emptyConfirmPasswordRowNumber));
            Thread.sleep(1000);
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(1000);
            WebElement errorText = webElement("VAR_ERRORTEXT");
            String message = errorText.getText();
            Assert.assertEquals("Error! Enter confirm password", message);
            testresultdata.put("5", new Object[] { 4d, "Registration","Registration without entering confirm password","Should show an error message","An error message is shown", "Pass" });
        } catch (Exception e) {
            testresultdata.put("5", new Object[] { 4d, "Registration","Registration without entering confirm password","Should show an error message","Error message is not shown", "Fail" });
        }}
    /* Registration with existing email */
    @Test(priority = 4)
    public void registrationWithExistingEmail() throws InterruptedException {   
        try {
            int emptyExistingEmailRowNumber = 5;
            WebElement registration = webElement("VAR_REGISTRATION");
            registration.click();
            Thread.sleep(1000);
            WebElement email = webElement("VAR_REGISTRATION_EMAIL");
            email.clear();
            email.sendKeys(getCellContent(0, emptyExistingEmailRowNumber));
            Thread.sleep(1000);
            WebElement username = webElement("VAR_REGISTRATION_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(1, emptyExistingEmailRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_REGISTRATION_PASSWORD");
            password.clear();
            password.sendKeys(getCellContent(2, emptyExistingEmailRowNumber));
            Thread.sleep(1000);
            WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD");
            confirmPassword.clear();
    confirmPassword.sendKeys(getCellContent(3,emptyExistingEmailRowNumber));
            Thread.sleep(1000);
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(1000);
            WebElement errorText = webElement("VAR_ERRORTEXT");
            String message = errorText.getText();
            Assert.assertEquals("Error! Email already exists", message);
            testresultdata.put("6", new Object[] { 5d, "Registration","Registration with existing email","Should show an error message","An error message is shown", "Pass" });
        } catch (Exception e) {
            testresultdata.put("6", new Object[] { 5d, "Registration","Registration with existing email","Should show an error message","Error message is not shown", "Fail" });
        }   }
    /* Registration with existing username */
    @Test(priority = 5)
    public void registrationWithExistingUsername() throws InterruptedException {    
        try {
            int emptyExistingUsernameRowNumber = 6;
            WebElement registration = webElement("VAR_REGISTRATION");
            registration.click();
            Thread.sleep(1000);
            WebElement email = webElement("VAR_REGISTRATION_EMAIL");
            email.clear();
            email.sendKeys(getCellContent(0, emptyExistingUsernameRowNumber));
            Thread.sleep(1000);
            WebElement username = webElement("VAR_REGISTRATION_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(1, emptyExistingUsernameRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_REGISTRATION_PASSWORD");
            password.clear();
            password.sendKeys(getCellContent(2, emptyExistingUsernameRowNumber));
            Thread.sleep(1000);
            WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD");
            confirmPassword.clear();
confirmPassword.sendKeys(getCellContent(3,emptyExistingUsernameRowNumber));
            Thread.sleep(1000);
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(1000);
            WebElement errorText = webElement("VAR_ERRORTEXT");
            String message = errorText.getText();
            Assert.assertEquals("Error! Username already exists", message);
            testresultdata.put("7", new Object[] { 6d, "Registration","Registration with existing username","Should show an error message","An error message is shown", "Pass" });
        } catch (Exception e) {
            testresultdata.put("7", new Object[] { 6d, "Registration","Registration with existing username","Should show an error message","Error message is not shown", "Fail" });
        }   }
    /* Registration with password and confirm password are different */
    @Test(priority = 6)
    public void registrationWithPasswordMismatch() throws InterruptedException {    
        try {
            int passwordMismatchRowNumber = 7;
            WebElement registration = webElement("VAR_REGISTRATION");
            registration.click();
            Thread.sleep(1000);
            WebElement email = webElement("VAR_REGISTRATION_EMAIL");
            email.clear();
            email.sendKeys(getCellContent(0, passwordMismatchRowNumber));
            Thread.sleep(1000);
            WebElement username = webElement("VAR_REGISTRATION_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(1, passwordMismatchRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_REGISTRATION_PASSWORD");
            password.clear();
            password.sendKeys(getCellContent(2, passwordMismatchRowNumber));
            Thread.sleep(1000);
            WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD");
            confirmPassword.clear();
    confirmPassword.sendKeys(getCellContent(3,passwordMismatchRowNumber));
            Thread.sleep(1000);
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(1000);
            WebElement errorText = webElement("VAR_ERRORTEXT");
            String message = errorText.getText();
            Assert.assertEquals("Error! Password and confirm password must match!", message);
            testresultdata.put("8",new Object[] {7d,"Registration","Registration with different password and confirm password","Should show an error message","An error message is shown", "Pass" });
        } catch (Exception e) {
            testresultdata.put("8",new Object[] {7d,"Registration","Registration with different password and confirm password","Should show an error message","Error message is not shown", "Fail" });
        }   }
    /* Successfull Registration */
    @Test(priority = 7)
    public void registrationSuccess() throws InterruptedException { 
        try {
            int successfullRegistrationRowNumber = 8;
            WebElement registration = webElement("VAR_REGISTRATION");
            registration.click();
            Thread.sleep(1000);
            WebElement email = webElement("VAR_REGISTRATION_EMAIL");
            email.clear();
            email.sendKeys(getCellContent(0, successfullRegistrationRowNumber));
            Thread.sleep(1000);
            WebElement username = webElement("VAR_REGISTRATION_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(1,successfullRegistrationRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_REGISTRATION_PASSWORD");
            password.clear();
    password.sendKeys(getCellContent(2,successfullRegistrationRowNumber));
            Thread.sleep(1000);
            WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD");
            confirmPassword.clear();        confirmPassword.sendKeys(getCellContent(3,successfullRegistrationRowNumber));
            Thread.sleep(1000);
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(1000);
            WebElement successMessage = webElement("VAR_SUCCESSMESSAGE");
            String message = successMessage.getText();
            Assert.assertEquals("Registration successful", message);
            Thread.sleep(1000);
            WebElement okbutton = webElement("VAR_REGISTRATION_OKBUTTON");
            okbutton.click();
            testresultdata.put("9", new Object[] { 8d, "Registration","Successfull registration","User should be successfully registered","User is successfully registered", "Pass" });
        } catch (Exception e) {
            testresultdata.put("9", new Object[] { 8d, "Registration","Successfull registration", "Should show an error message","Error message is not shown", "Fail" });
        }
    }
    @AfterTest
    public void afterTest() throws InterruptedException, BiffException, IOException {
        closeBrowser();
    }   }
QZO_Login.java

package User;
import java.io.IOException;
import junit.framework.Assert;
import jxl.read.biff.BiffException;
import org.openqa.selenium.WebElement;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

@SuppressWarnings("deprecation")
public class QZO_login extends QZO {
    @BeforeTest
    public void beforeTest() throws BiffException, IOException,InterruptedException {   
        openBrowser(2);
        input(properties.getProperty("VAR_LOGINDETAILS"));
    }
    /* Login without entering username */
    @Test(priority = 0)
    public void loginWithoutUsername() throws InterruptedException {    
        try {
            int emptyUsernameRowNumber = 1;
            WebElement login = webElement("VAR_LOGIN");
            login.click();
            Thread.sleep(1000);
            WebElement username = webElement("VAR_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(0, emptyUsernameRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_PASSWORD");
            password.sendKeys(getCellContent(1, emptyUsernameRowNumber));
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(2000);
            WebElement errorText = webElement("VAR_ERRORTEXT");
            String message = errorText.getText();
            Assert.assertEquals("Error! Please enter email!", message);
            testresultdata.put("10", new Object[] { 9d, "Login","Login without username", "Should show an error message","An error message is shown", "Pass" });
        } catch (Exception e) {
            testresultdata.put("10", new Object[] { 9d, "Login","Login without username", "Should show an error message","Error message is not shown", "Fail" });
        }}
    /* Login without entering password */
    @Test(priority = 1)
    public void loginWithoutPassword() throws InterruptedException {
        try {
            int emptyPasswordRowNumber = 2;
            WebElement login = webElement("VAR_LOGIN");
            login.click();
            Thread.sleep(1000);
            WebElement username = webElement("VAR_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(0, emptyPasswordRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_PASSWORD");
            password.clear();
            password.sendKeys(getCellContent(1, emptyPasswordRowNumber));
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(2000);
            WebElement errorText = webElement("VAR_ERRORTEXT");
            String message = errorText.getText();
            Assert.assertEquals("Error! Please enter password!", message);
            testresultdata.put("11", new Object[] { 10d, "Login","Login without password", "Should show an error message","An error message is shown", "Pass" });
        } catch (Exception e) {
            testresultdata.put("11", new Object[] { 10d, "Login","Login without password", "Should show an error message","Error message is not shown", "Fail" });
        }}
    /* Login with wrong password */
    @Test(priority = 2)
    public void loginWithWrongPassword() throws InterruptedException {
        try {
            int wrongPasswordRowNumber = 3;
            WebElement login = webElement("VAR_LOGIN");
            login.click();
            Thread.sleep(1000);
            WebElement username = webElement("VAR_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(0, wrongPasswordRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_PASSWORD");
            password.clear();
            password.sendKeys(getCellContent(1, wrongPasswordRowNumber));
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(2000);
            WebElement errorText = webElement("VAR_ERRORTEXT");
            String message = errorText.getText();
            Assert.assertEquals("Sorry.. Please check your email or password.!", message);
            testresultdata.put("12", new Object[] { 11d, "Login","Login with wrong username","Should show an error message","An error message is shown", "Pass" });
        } catch (Exception e) {
            testresultdata.put("12", new Object[] { 11d, "Login","Login with wrong username","Should show an error message","Error message is not shown", "Fail" });
        }   }
    /* Login with wrong username */
    @Test(priority = 3)
    public void loginWithWrongUsername() throws InterruptedException {
        try {
            int wrongPasswordRowNumber = 4;
            WebElement login = webElement("VAR_LOGIN");
            login.click();
            Thread.sleep(1000);
            WebElement username = webElement("VAR_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(0, wrongPasswordRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_PASSWORD");
            password.clear();
            password.sendKeys(getCellContent(1, wrongPasswordRowNumber));
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(2000);
            WebElement errorText = webElement("VAR_ERRORTEXT");
            String message = errorText.getText();
            Assert.assertEquals("Sorry.. Please check your email or password.!", message);
            testresultdata.put("13", new Object[] { 12d, "Login","Login with wrong password","Should show an error message","An error message is shown", "Pass" });
        } catch (Exception e) {
            testresultdata.put("13", new Object[] { 12d, "Login","Login with wrong password","Should show an error message","Error message is not shown", "Fail" });
        }   }
    /* Login without clicking on the activation link */
    @Test(priority = 4)
    public void loginWithoutActivation() throws InterruptedException {
        try {
            int wrongUsernameRowNumber = 5;
            WebElement login = webElement("VAR_LOGIN");
            login.click();
            Thread.sleep(1000);
            WebElement username = webElement("VAR_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(0, wrongUsernameRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_PASSWORD");
            password.clear();
            password.sendKeys(getCellContent(1, wrongUsernameRowNumber));
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(2000);
            WebElement errorText = webElement("VAR_ERRORTEXT1");
            String message = errorText.getText();
            Assert.assertEquals("Registration not completed !", message);
            WebElement okButton = webElement("VAR_OKBUTTON");
            okButton.click();
            testresultdata.put("14", new Object[] { 13d, "Login","Login without activation", "Should show an error message","An error message is shown", "Pass" });
        } catch (Exception e) {
            testresultdata.put("14", new Object[] { 13d, "Login","Login without activation", "Should show an error message","Error message is not shown", "Fail" });
        }   }
    /* Successful Login */
    @Test(priority = 5)
    public void loginSuccess() throws InterruptedException {
        try {
            int successRowNumber = 6;
            WebElement login = webElement("VAR_LOGIN");
            login.click();
            Thread.sleep(1000);
            WebElement username = webElement("VAR_USERNAME");
            username.clear();
            username.sendKeys(getCellContent(0, successRowNumber));
            Thread.sleep(1000);
            WebElement password = webElement("VAR_PASSWORD");
            password.clear();
            password.sendKeys(getCellContent(1, successRowNumber));
            WebElement continueButton = webElement("VAR_CONTINUE");
            continueButton.click();
            Thread.sleep(2000);
            String currentURL = driver.getCurrentUrl();
Assert.assertEquals(currentURL,"http://mqdemostaging.azurewebsites.net/Dashboard");
            testresultdata.put("15",new Object[] {14d,"Login","Successfull Login","User should be successfully logged in to the application","User is successfully logged in to the application","Pass" });
        } catch (Exception e) {
            testresultdata.put("15", new Object[] { 14d, "Login","Successfull Login", "Should show an error message","Error message is shown", "Fail" });
        }   }
    @AfterTest
    public void afterTest() throws InterruptedException, BiffException, IOException {
        closeBrowser();
    }}
QZO.java

包用户

import java.awt.AWTException;
import java.awt.Robot;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.openqa.selenium.By;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.Select;

public class QZO {
    WebDriver driver;
    WebDriver tempDriver;
    protected Properties properties;
    private final String PROPERTY_FILE_NAME = "constant.properties";
    private Sheet excelSheet;
    HSSFWorkbook workbook;
    HSSFSheet sheet;
    Map<String, Object[]> testresultdata;
    int rowNumber=1;
    public QZO() {
        properties = new Properties();
        try {
            InputStream inputStream = getClass().getClassLoader()
                    .getResourceAsStream(PROPERTY_FILE_NAME);
            if (null != inputStream) {
                properties.load(inputStream);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public int openBrowser(int value) throws BiffException, IOException,InterruptedException {

        input(properties.getProperty("VAR_SHEETS"));
        System.setProperty("webdriver.chrome.driver","D:\\MyProjects\\SeleniumTrials\\chromedriver_win32\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get(properties.getProperty("VAR_BASEURL"));
        driver.manage().window().maximize();
        workbook = new HSSFWorkbook();
        sheet = workbook.createSheet("TestResult_Registration");
        //sheet = workbook.createSheet("TestResult_Login");
        testresultdata = new LinkedHashMap<String, Object[]>();
        testresultdata.put("1", new Object[] { "Test Case Id", "Functionality","Action", "Expected Result", "Actual Result", "Status" });
        return 0;
    }

    public void input(String fileName) throws BiffException, IOException,
            InterruptedException {
        FileInputStream fi = new FileInputStream(fileName);
        Workbook w = Workbook.getWorkbook(fi);
        excelSheet = w.getSheet(0);
        Thread.sleep(1000);
    }

    public String getCellContent(int columnNumber, int rowNumber) {
        return excelSheet.getCell(columnNumber, rowNumber).getContents();
    }

    public WebElement webElement(String element) {
        return driver.findElement(By.xpath(properties.getProperty(element)));
    }
public void closeBrowser() throws InterruptedException, BiffException, IOException {


        Thread.sleep(1000);
        Set<String> keyset = testresultdata.keySet();
        int rownum = 0;
        for (String key : keyset) {
            Row row = sheet.createRow(rownum++);
            Object[] objArr = testresultdata.get(key);
            int cellnum = 0;
            for (Object obj : objArr) {
                org.apache.poi.ss.usermodel.Cell cell = row.createCell(cellnum++);
                if (obj instanceof Date)
                    cell.setCellValue((Date) obj);
                else if (obj instanceof Boolean)
                    cell.setCellValue((Boolean) obj);
                else if (obj instanceof String)
                    cell.setCellValue((String) obj);
                else if (obj instanceof Double)
                    cell.setCellValue((Double) obj);
            }
        }
        try {
            FileOutputStream out = new FileOutputStream("D:\\MyProjects\\Selenium Trials\\QZO\\src\\Resources\\Data\\TestResult.xls");
            workbook.write(out);
            out.close();
            System.out.println("Excel written successfully..");

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        driver.quit();
    }
}
import java.awt.AWTException;
导入java.awt.Robot;
导入java.io.FileInputStream;
导入java.io.FileNotFoundException;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.text.DateFormat;
导入java.text.simpleDataFormat;
导入java.util.array;
导入java.util.Date;
导入java.util.LinkedHashMap;
导入java.util.Map;
导入java.util.Properties;
进口jxl.Sheet;
导入jxl.工作簿;
导入jxl.read.biff.BiffException;
导入org.apache.poi.hssf.usermodel.HSSFSheet;
导入org.apache.poi.hssf.usermodel.HSSFWorkbook;
导入org.openqa.selenium.By;
导入org.openqa.selenium.Point;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.chrome.ChromeDriver;
导入org.openqa.selenium.interactions.Action;
导入org.openqa.selenium.interactions.Actions;
导入org.openqa.selenium.support.ui.Select;
公共类QZO{
网络驱动程序;
网络驱动程序;
受保护财产;
私有最终字符串属性\u文件\u NAME=“constant.properties”;
私人床单;
HSSF工作手册;
HSSF表;
映射测试结果数据;
int rowNumber=1;
公共QZO(){
属性=新属性();
试一试{
InputStream InputStream=getClass().getClassLoader()
.getResourceAsStream(属性\文件\名称);
if(null!=inputStream){
属性。加载(inputStream);
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
public int openBrowser(int值)抛出biffeException、IOException、InterruptedException{
输入(properties.getProperty(“VAR_SHEETS”);
System.setProperty(“webdriver.chrome.driver”,“D:\\MyProjects\\SeleniumTrials\\chromedriver\u win32\\chromedriver.exe”);
驱动程序=新的ChromeDriver();
get(properties.getProperty(“VAR_BASEURL”);
driver.manage().window().maximize();
工作簿=新的HSSF工作簿();
sheet=workbook.createSheet(“TestResult_注册”);
//sheet=workbook.createSheet(“TestResult_Login”);
testresultdata=新建LinkedHashMap();
testresultdata.put(“1”,新对象[]{“测试用例Id”,“功能”,“操作”,“预期结果”,“实际结果”,“状态”});
返回0;
}
公共void输入(字符串文件名)抛出biffeException、IOException、,
中断异常{
FileInputStream fi=新的FileInputStream(文件名);
工作簿w=Workbook.getWorkbook(fi);
excelSheet=w.getSheet(0);
睡眠(1000);
}
公共字符串getCellContent(int columnNumber,int rowNumber){
返回excelSheet.getCell(columnNumber,rowNumber).getContents();
}
公共WebElement WebElement(字符串元素){
返回driver.findElement(By.xpath(properties.getProperty(element));
}
public void closeBrowser()引发InterruptedException、BiffeException、IOException{
睡眠(1000);
Set keyset=testresultdata.keyset();
int rownum=0;
用于(字符串键:键集){
Row-Row=sheet.createRow(rownum++);
Object[]objArr=testresultdata.get(key);
int-cellnum=0;
用于(对象对象对象:对象对象对象){
org.apache.poi.ss.usermodel.Cell Cell=row.createCell(cellnum++);
if(obj实例截止日期)
cell.setCellValue((日期)obj);
else if(obj instanceof Boolean)
cell.setCellValue((布尔)obj);
else if(字符串的obj实例)
cell.setCellValue((字符串)obj);
else if(双精度的obj实例)
cell.setCellValue((双)obj);
}
}
试一试{
FileOutputStream out=新的FileOutputStream(“D:\\MyProjects\\Selenium Trials\\QZO\\src\\Resources\\Data\\TestResult.xls”);
练习册。写(出);
out.close();
System.out.println(“Excel编写成功…”);
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
driver.quit();
}
}

您可以创建如下内容-

 XSSFSheet sheet= workbook.createSheet("Sheet_No_1");

 XSSFSheet sheet= workbook.createSheet("Sheet_No_2");

等等

在项目中创建一个名为Xsl_Reader的新类,并复制粘贴下面的代码

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFHyperlink;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;

import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.xssf.usermodel.*;


import java.io.*;
import java.util.Calendar;


public class Xls_Reader {

public  String path;
public  FileInputStream fis = null;
public  FileOutputStream fileOut =null;
private XSSFWorkbook workbook = null;
private XSSFSheet sheet = null;
private XSSFRow row   =null;
private XSSFCell cell = null;

public Xls_Reader(String path) {

    this.path=path;
    try {
        fis = new FileInputStream(path);
        workbook = new XSSFWorkbook(fis);
        sheet = workbook.getSheetAt(0);
        fis.close();
    } catch (Exception e) {

        e.printStackTrace();
    } 

}


// returns the row count in a sheet
public int getRowCount(String sheetName){
    int index = workbook.getSheetIndex(sheetName);
    if(index==-1)
        return 0;
    else{
    sheet = workbook.getSheetAt(index);
    int number=sheet.getLastRowNum()+1;
    return number;
    }

}



// returns the data from a cell
public String getCellData(String sheetName,String colName,int rowNum){
    try{
        if(rowNum <=0)
            return "";

    int index = workbook.getSheetIndex(sheetName);
    int col_Num=-1;
    if(index==-1)
        return "";

    sheet = workbook.getSheetAt(index);
    row=sheet.getRow(0);
    for(int i=0;i<row.getLastCellNum();i++){
        //System.out.println(row.getCell(i).getStringCellValue().trim());
        if(row.getCell(i).getStringCellValue().trim().equals(colName.trim()))
            col_Num=i;
    }
    if(col_Num==-1)
        return "";

    sheet = workbook.getSheetAt(index);
    row = sheet.getRow(rowNum-1);
    if(row==null)
        return "";
    cell = row.getCell(col_Num);

    if(cell==null)
        return "";

    if(cell.getCellType()==Cell.CELL_TYPE_STRING)
          return cell.getStringCellValue();
    else if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC || cell.getCellType()==Cell.CELL_TYPE_FORMULA ){

          String cellText  = String.valueOf(cell.getNumericCellValue());
          if (HSSFDateUtil.isCellDateFormatted(cell)) {

              double d = cell.getNumericCellValue();

              Calendar cal =Calendar.getInstance();
              cal.setTime(HSSFDateUtil.getJavaDate(d));
                cellText =
                 (String.valueOf(cal.get(Calendar.YEAR))).substring(2);
               cellText = cal.get(Calendar.DAY_OF_MONTH) + "/" +
                          cal.get(Calendar.MONTH)+1 + "/" + 
                          cellText;



             }



          return cellText;
      }else if(cell.getCellType()==Cell.CELL_TYPE_BLANK)
          return ""; 
      else 
          return String.valueOf(cell.getBooleanCellValue());

    }
    catch(Exception e){

        e.printStackTrace();
        return "row "+rowNum+" or column "+colName +" does not exist in xls";
    }
}



// returns the data from a cell
public String getCellData(String sheetName,int colNum,int rowNum){
    try{
        if(rowNum <=0)
            return "";

    int index = workbook.getSheetIndex(sheetName);

    if(index==-1)
        return "";


    sheet = workbook.getSheetAt(index);
    row = sheet.getRow(rowNum-1);
    if(row==null)
        return "";
    cell = row.getCell(colNum);
    if(cell==null)
        return "";

  if(cell.getCellType()==Cell.CELL_TYPE_STRING)
      return cell.getStringCellValue();
  else if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC || cell.getCellType()==Cell.CELL_TYPE_FORMULA ){

      String cellText  = String.valueOf(cell.getNumericCellValue());
      if (HSSFDateUtil.isCellDateFormatted(cell)) {
           // format in form of M/D/YY
          double d = cell.getNumericCellValue();

          Calendar cal =Calendar.getInstance();
          cal.setTime(HSSFDateUtil.getJavaDate(d));
            cellText =
             (String.valueOf(cal.get(Calendar.YEAR))).substring(2);
           cellText = cal.get(Calendar.MONTH)+1 + "/" +
                      cal.get(Calendar.DAY_OF_MONTH) + "/" +
                      cellText;



         }



      return cellText;
  }else if(cell.getCellType()==Cell.CELL_TYPE_BLANK)
      return "";
  else 
      return String.valueOf(cell.getBooleanCellValue());
    }
    catch(Exception e){

        e.printStackTrace();
        return "row "+rowNum+" or column "+colNum +" does not exist  in xls";
    }
}




// returns true if data is set successfully else false
public boolean setCellData(String sheetName,String colName,int rowNum, String data){
    try{
    fis = new FileInputStream(path); 
    workbook = new XSSFWorkbook(fis);

    if(rowNum<=0)
        return false;

    int index = workbook.getSheetIndex(sheetName);
    int colNum=-1;
    if(index==-1)
        return false;


    sheet = workbook.getSheetAt(index);


    row=sheet.getRow(0);
    for(int i=0;i<row.getLastCellNum();i++){
        //System.out.println(row.getCell(i).getStringCellValue().trim());
        if(row.getCell(i).getStringCellValue().trim().equals(colName))
            colNum=i;
    }
    if(colNum==-1)
        return false;

    sheet.autoSizeColumn(colNum); 
    row = sheet.getRow(rowNum-1);
    if (row == null)
        row = sheet.createRow(rowNum-1);

    cell = row.getCell(colNum); 
    if (cell == null)
        cell = row.createCell(colNum);


    cell.setCellValue(data);

    fileOut = new FileOutputStream(path);

    workbook.write(fileOut);

    fileOut.close();    

    }
    catch(Exception e){
        e.printStackTrace();
        return false;
    }
    return true;
}



// returns true if data is set successfully else false
public boolean setCellData(String sheetName,String colName,int rowNum, String data,String url){

    try{
    fis = new FileInputStream(path); 
    workbook = new XSSFWorkbook(fis);

    if(rowNum<=0)
        return false;

    int index = workbook.getSheetIndex(sheetName);
    int colNum=-1;
    if(index==-1)
        return false;


    sheet = workbook.getSheetAt(index);

    row=sheet.getRow(0);
    for(int i=0;i<row.getLastCellNum();i++){

        if(row.getCell(i).getStringCellValue().trim().equalsIgnoreCase(colName))
            colNum=i;
    }

    if(colNum==-1)
        return false;
    sheet.autoSizeColumn(colNum); 
    row = sheet.getRow(rowNum-1);
    if (row == null)
        row = sheet.createRow(rowNum-1);

    cell = row.getCell(colNum); 
    if (cell == null)
        cell = row.createCell(colNum);

    cell.setCellValue(data);
    XSSFCreationHelper createHelper = workbook.getCreationHelper();

    //cell style for hyperlinks

    CellStyle hlink_style = workbook.createCellStyle();
    XSSFFont hlink_font = workbook.createFont();
    hlink_font.setUnderline(XSSFFont.U_SINGLE);
    hlink_font.setColor(IndexedColors.BLUE.getIndex());
    hlink_style.setFont(hlink_font);
    //hlink_style.setWrapText(true);

    XSSFHyperlink link = createHelper.createHyperlink(XSSFHyperlink.LINK_FILE);
    link.setAddress(url);
    cell.setHyperlink(link);
    cell.setCellStyle(hlink_style);

    fileOut = new FileOutputStream(path);
    workbook.write(fileOut);

    fileOut.close();    

    }
    catch(Exception e){
        e.printStackTrace();
        return false;
    }
    return true;
}



// returns true if sheet is created successfully else false
public boolean addSheet(String  sheetname){     

    FileOutputStream fileOut;
    try {
         workbook.createSheet(sheetname);   
         fileOut = new FileOutputStream(path);
         workbook.write(fileOut);
         fileOut.close();           
    } catch (Exception e) {         
        e.printStackTrace();
        return false;
    }
    return true;
}

// returns true if sheet is removed successfully else false if sheet does not exist
public boolean removeSheet(String sheetName){       
    int index = workbook.getSheetIndex(sheetName);
    if(index==-1)
        return false;

    FileOutputStream fileOut;
    try {
        workbook.removeSheetAt(index);
        fileOut = new FileOutputStream(path);
        workbook.write(fileOut);
        fileOut.close();            
    } catch (Exception e) {         
        e.printStackTrace();
        return false;
    }
    return true;
}
// returns true if column is created successfully
public boolean addColumn(String sheetName,String colName){


    try{                
        fis = new FileInputStream(path); 
        workbook = new XSSFWorkbook(fis);
        int index = workbook.getSheetIndex(sheetName);
        if(index==-1)
            return false;

    XSSFCellStyle style = workbook.createCellStyle();
    style.setFillForegroundColor(HSSFColor.GREY_40_PERCENT.index);
    style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

    sheet=workbook.getSheetAt(index);

    row = sheet.getRow(0);
    if (row == null)
        row = sheet.createRow(0);


    if(row.getLastCellNum() == -1)
        cell = row.createCell(0);
    else
        cell = row.createCell(row.getLastCellNum());

        cell.setCellValue(colName);
        cell.setCellStyle(style);

        fileOut = new FileOutputStream(path);
        workbook.write(fileOut);
        fileOut.close();            

    }catch(Exception e){
        e.printStackTrace();
        return false;
    }

    return true;


}



// removes a column and all the contents
public boolean removeColumn(String sheetName, int colNum) {
    try{
    if(!isSheetExist(sheetName))
        return false;
    fis = new FileInputStream(path); 
    workbook = new XSSFWorkbook(fis);
    sheet=workbook.getSheet(sheetName);
    XSSFCellStyle style = workbook.createCellStyle();
    style.setFillForegroundColor(HSSFColor.GREY_40_PERCENT.index);
    XSSFCreationHelper createHelper = workbook.getCreationHelper();
    style.setFillPattern(HSSFCellStyle.NO_FILL);



    for(int i =0;i<getRowCount(sheetName);i++){
        row=sheet.getRow(i);    
        if(row!=null){
            cell=row.getCell(colNum);
            if(cell!=null){
                cell.setCellStyle(style);
                row.removeCell(cell);
            }
        }
    }
    fileOut = new FileOutputStream(path);
    workbook.write(fileOut);
    fileOut.close();
    }
    catch(Exception e){
        e.printStackTrace();
        return false;
    }
    return true;

}


public boolean isSheetExist(String sheetName){
    int index = workbook.getSheetIndex(sheetName);
    if(index==-1){
        index=workbook.getSheetIndex(sheetName.toUpperCase());
            if(index==-1)
                return false;
            else
                return true;
    }
    else
        return true;
}


// returns number of columns in a sheet 
public int getColumnCount(String sheetName){
    // check if sheet exists
    if(!isSheetExist(sheetName))
     return -1;

    sheet = workbook.getSheet(sheetName);
    row = sheet.getRow(0);

    if(row==null)
        return -1;

    return row.getLastCellNum();



}


//String sheetName, String testCaseName,String keyword ,String URL,String message
public boolean addHyperLink(String sheetName,String screenShotColName,String testCaseName,int index,String url,String message){


    url=url.replace('\\', '/');
    if(!isSheetExist(sheetName))
         return false;

    sheet = workbook.getSheet(sheetName);

    for(int i=2;i<=getRowCount(sheetName);i++){
        if(getCellData(sheetName, 0, i).equalsIgnoreCase(testCaseName)){

            setCellData(sheetName, screenShotColName, i+index, message,url);
            break;
        }
    }


    return true; 
}
public int getCellRowNum(String sheetName,String colName,String cellValue){

    for(int i=2;i<=getRowCount(sheetName);i++){
        if(getCellData(sheetName,colName , i).equalsIgnoreCase(cellValue)){
            return i;
        }
    }
    return -1;

}


// to run this on stand alone
public static void main(String arg[]) throws IOException{


    Xls_Reader datatable = null;


         datatable = new Xls_Reader("C:\\CM3.0\\app\\test\\Framework\\AutomationBvt\\src\\config\\xlfiles\\Controller.xlsx");
            for(int col=0 ;col< datatable.getColumnCount("TC5"); col++){
                System.out.println(datatable.getCellData("TC5", col, 1));
            }
}}

这对我不起作用。我会解释得更清楚。我有三个c
Xls_Reader xr = new Xls_Reader("C:\\Users\\new28062016\\Desktop\\New Microsoft Office Excel Worksheet.xlsx");
    xr.addSheet("Maninder");
    //Xls_Reader is a class you can add this class into your project and that will help you to perform excel function
    //Now a new sheet with name of must be added. If you wanted to write on this new sheet then you have to simply create columns and results

    xr.addColumn("Maninder", "TC ID");
    xr.addColumn("Maninder", "Description");
    xr.addColumn("Maninder", "Description");