2016-12-05 39 views
2

我想實現一個數據驅動的方面到我的測試自動化框架。我創建了一個似乎可以正常工作的fe函數,它可以檢索參數的列數/行數,從特定單元獲取數據,更新特定單元格等等。在Java中的Excel單元格的行驗證POI

我現在正在用基本上有2列的腳本來測試它。第一列是用戶名,第二列是密碼。我可以迭代這些行,沒有問題的列。

我有一個問題,如果有一個空白單元格會崩潰,但我解決了一些錯誤處理,如果有黑色單元格,它返回字符串「空單元格」。

我有一個小問題,即如果一些測試數據的不對齊:

The rows are out of alignment

我不知道如何處理這樣的問題。如果兩個單元格均爲空(它跳過該行),我添加了一些驗證。我怎樣才能讓它跳過這些類型的行,並只取得有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++; 
     }   

我只是希望工具完全跳過這些奇怪的錯誤對齊的單元格。我如何實現這一目標?

回答

2

你可以改變一下邏輯並嘗試下面的內容嗎?這將跳過其中任何一個單元格都爲空的行。

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); 
    } 
} 
+2

更改顯示...如果Cell1不是空的而Cell2不是空的,則登錄並註銷。如果任一單元格*爲空,則會跳過登錄和註銷步驟,然後返回到'for'的開頭並遞增'i'。 – JeffC

+0

謝謝Gowrishankar我沒有意識到我可以添加一個感嘆號來否定子句:!param1_celldata.contains(「Empty cell」)。感謝指引我朝着正確的方向工作。 – tarquin

相關問題