【问题标题】:Row validation of excel cells in Java POIJava POI中excel单元格的行验证
【发布时间】:2016-12-05 10:51:25
【问题描述】:

我正在尝试在我的测试自动化框架中实现数据驱动方面。我创建了一个似乎可以正常工作的 fe 函数,它可以检索参数的列/行数、从特定单元格获取数据、更新特定单元格等等。

我现在正在使用一个基本上有 2 列的脚本对此进行测试。第一列是用户名,第二列是密码。我可以毫无问题地遍历这些行、列。

我遇到了一个问题,如果有一个空白单元格会崩溃,但我通过一些错误处理解决了这个问题,如果有一个黑色单元格,它会返回字符串“空单元格”。

我有一个小问题,如果某些测试数据不对齐:

我不确定如何处理这样的问题。如果两个单元格都是空的(它跳过该行),我已经添加了一些验证。如何让它完全跳过这些类型的行并只获取具有 2 个单元格条目的数据?

我的代码如下:

int endMarker = edc.getExcelParameterRow(edc, 0, nextColumnMarker);

    System.out.println(endMarker);

    int columnParam = edc.getExcelParameterCol(edc, 0, ExcelDataUserName);
    System.out.println(columnParam);

    open_chrome_browser();
    Logout lo = new Logout();



    //get all of the usernames
    for (i = 0; i <endMarker-1;i++){
        String param1_celldata = edc.getExcelData(0, i+1, columnParam);
        String param2_celldata = edc.getExcelData(0, i+1, columnParam+1);

        //iterate over the username passwords of the data.xls sheet to login and out as different users

        if(param1_celldata.contains("Empty cell")&&param2_celldata.contains("Empty cell")){
            i++;
        }


        LoginPage.login(driver, edc.getExcelData(0, i+1, columnParam), edc.getExcelData(0, i+1, columnParam+1));
        lo.logout_user_out(driver);

我无法执行以下操作:

if(param1_celldata.contains("Empty cell")&&param2_celldata.contains("Empty cell")){
            i++;
        }
        if(param1_celldata.contains("Empty cell")){
            i++;
        }
        if(param2_celldata.contains("Empty cell")){
            i++;
        } 

以下内容也不符合要求:

if(param1_celldata.contains("Empty cell")&&param2_celldata.contains("Empty cell")){
            i++;
        }
        if(param1_celldata.contains("Empty cell")||param2_celldata.contains("Empty cell")){
            i++;
        }           

我只是希望该工具完全跳过这些奇怪的未对齐单元格。我该如何做到这一点?

【问题讨论】:

    标签: java selenium apache-poi


    【解决方案1】:

    你能稍微改变一下逻辑并尝试下面的方法吗?这将跳过任一单元格为空的行。

    for (i = 0; i < endMarker - 1; i++)
    {
        String param1_celldata = edc.getExcelData(0, i + 1, columnParam);
        String param2_celldata = edc.getExcelData(0, i + 1, columnParam + 1);
    
        // iterate over the username passwords of the data.xls sheet to login and out as different users
        if (!param1_celldata.contains("Empty cell") && !param2_celldata.contains("Empty cell"))
        {
            LoginPage.login(driver, param1_celldata, param2_celldata);
            lo.logout_user_out(driver);
        }
    }
    

    【讨论】:

    • 更改内容为... 如果 Cell1 不为空且 Cell2 不为空,则登录并注销。如果任一单元格为空,则会跳过登录和注销步骤,将您带回到for 的开头并递增i
    • 谢谢 Gowrishankar 我没有意识到我可以添加一个感叹号来否定子句:!param1_celldata.contains("Empty cell")。感谢您为我指明正确的方向,现在正在工作。
    猜你喜欢
    • 2012-01-09
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多