java - 在selenium java中动态将数据写入excel

标签 java selenium selenium-webdriver automation

执行具有多个参数的测试用例后,我将结果(通过/失败)传递到 Excel 工作表中。有 6 行,第一个结果失败是进入所有 6 行(它应该只进入第 1 行),第二个结果通过是从第 1 行开始进入所有 6 行

获取数据代码

public static Object[][] getData() throws IOException{

        int rowCount = ExcelUtil.getRowCount();
        int colCount = ExcelUtil.getColumnCount();

        Object[][] data = new Object[rowCount-1][colCount];

        for(int i=1; i<rowCount; i++)
        {
            for(int j=0; j<colCount; j++)
            {
                //Check cell is empty or not
                if (data[i-1][j] == null) {
                    data[i-1][j] = "";
                }
                //change values to string
                data[i-1][j] = ExcelUtil.setCellDataToString(i, j);
            }
        }
        return data;
    }

测试用例

public static void signIn(String email, String password, String result) throws IOException, InterruptedException {
        LoginPage lp = PageFactory.initElements(driver, LoginPage.class);

        driver.navigate().to(loginUrl);

        lp.email().sendKeys(email);
        lp.password().sendKeys(password);
        lp.submitlogin().click();

        //Verify
        String expectedUrl = "http://automationpractice.com/index.php?controller=my-account";
        String actualUrl = driver.getCurrentUrl();
        String loginmessage;

        if (expectedUrl.equalsIgnoreCase(actualUrl)) {
            loginmessage = "pass";
            lp.logout().click();
        }else {
            loginmessage ="fail";
        }

        ExcelUtil.writeIntoExcel(filePath, loginmessage);
    }

写入Excel

public static void writeIntoExcel(String FilePath, String dataToWrite) throws IOException {
        int rowCount = ExcelUtil.getRowCount();
        int colCount = ExcelUtil.getColumnCount();

        try {
            for (int i = 1; i <= rowCount; i++) {
                shFile.getRow(i).createCell(colCount-1).setCellValue(dataToWrite); 
                fileOut = new FileOutputStream(filePath);
                wbFile.write(fileOut);
            }
            fileOut.close();
        } catch (Exception e) {
            System.out.println("Data is not entered into excel");
        }
    }

最佳答案

您不应该为每次测试运行迭代行。改变方法

public static void writeIntoExcel

根据电子邮件和密码内容查找行号,然后在该行中创建结果单元格。

关于java - 在selenium java中动态将数据写入excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60631075/

相关文章:

java - Spring Boot 和 Hibernate 验证失败

java - 命名 boolean 值在 while 语句中不起作用

java - WebDriver 从页面中删除元素

java - 搜索策略以有效地从服务或服务器加载数据?

java - 更改原始音频文件中的音调?

python - 如何使用 behave 框架中的 fixture 使 selenium webdriver 作为 before_tag Hook 的一部分运行?

c# - 更改 HTTP header Selenium + PhantomJS

java - Selenium Java(maven 项目): TestNG results differs from ReportNG

vba - 如何将 Selenium 添加到 Excel VBA 2013?

java - 使用带有 Java 的 Selenium WebDriver 滚动