2016-12-05 6 views
2

私はテスト自動化フレームワークにデータ駆動型のアスペクトを実装しようとしています。パラメータのcol/row数を取得し、特定のセルからデータを取得し、特定のセルを更新するなど、正常に動作するように見えるfe関数を作成しました。Java POIでのExcelセルの行検証

これは基本的に2つの列を持つスクリプトでこれをテストしています。最初の列はユーザ​​ー名で、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

関連する問題