2017-03-17 55 views
0

私はAppium + Javaを使用してタブレットアプリケーションを自動化しています。画面内には、スクロール・ビューを持つ100以上のフィールド(Textbox + Dropdown)が自動化されています。Appiumのスクロール

これらの100以上のフィールドを自動化するには、テストケースとテストデータを別々のExcelシートに含めてすべてのID(そのテキストボックスとそのドロップダウンのドロップダウンリスト)をリストアップしました。私のコードはループで実行され、テストケース、そのデータと関連IDを選んで実行します。

loop : for(int j = 1; j <= fieldCount; j++) 
{ 
    objElementRepositoryLibrary.setElementRepositoryDataLibrary(j); 

    switch(ElementRepositoryLibrary.getElementType()) { 

    case "AutoPopulated": 
     System.out.println(ElementRepositoryLibrary.getElementValue() + " is Autopopulated"); 
     break; 

    case "Dropdown": 
     ElementOperation.checkElementState(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue()); 

     if(ElementOperation.ElementAcceess.equals(false)) 
      System.out.println(ElementRepositoryLibrary.getElementValue() + " is disabled"); 
     else 
      objElementOperation.dropdownSelectListner(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue(), field[0][j-1]); 
     break; 

    case "Button": 
     ElementOperation.checkElementState(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue()); 

     if(ElementOperation.ElementAcceess.equals(false)) { 
      System.out.println(ElementRepositoryLibrary.getElementValue() + " is disabled"); 
      break loop; 
     } 
     else if(field[0][j-1].equals("")) 
      System.out.println("Checking for Null value"); 
     else if(field[0][j-1].equals("Yes") && ElementRepositoryLibrary.getFieldName().equals("QR Scanner")) 
      objElementOperation.buttonClickListner(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue()); 
     else if(ElementRepositoryLibrary.getFieldName().contains("Capture Document")) 
      objElementOperation.captureDocument(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue()); 
      break; 

    default : 
     objElementOperation.textboxSetListner(qdeDriver, ElementRepositoryLibrary.getElementType(), ElementRepositoryLibrary.getLocator(), 
       ElementRepositoryLibrary.getElementValue(), field[0][j-1]); 
     break; 
    } 
} 

ISSUE::だから、私のコードは次のようになり、スクリーン:数(7言う)のフィールドを充填した後、それは私が次のフィールドに移動するには、画面をスクロールする必要があるので(それは次のようになります私はNoSuchElementExceptionを与えています7つのフィールド&があります。下のフィールドを表示するにはスクロールする必要があり、画面に表示されるまでオートメーターはその要素を認識しません)。

私が試したことは、NoSuchElementExceptionを捕まえてScroll操作を実行したことです。しかし、検索された要素が実際に存在しない場合、NoSuchElementExceptionを捕捉してスクロール操作を行うため、適切な方法ではありません。

この問題を解決するには、いくつかの良い方法を提案してください。詳細が必要な場合はお知らせください。

+0

ドロップダウンリストの2つ(またはそれ以上)のアイテムが同じ値を持つ可能性がありますか? –

+0

@DavidEp、いいえ、それはできません。 この質問は適切ですか? – Ashish

+0

はい - 私はあなたに答えを与えることができると思います –

答えて

0

私はあなたからの理解では、コードが正常に動作しますので、私は、このテストを完全にするために何をするでしょう:

  1. (すでに行ったように)を押して、ドロップダウンリスト上のアイテムを検索 - この中にNoSuchElementExceptionを無視する権利があった場合
  2. 最後に表示された項目の名前を保存します(コードスニペットのヘルプが必要な場合はお知らせください)
  3. もう一度スクロールして項目を検索し、最後の項目を再度保存します。
  4. 数回反復した後、最後の項目は同じままになります - >これはリストの最後にあることを意味します。この場合、テストは失敗します。
+0

私の推測では、あなたは私の質問を誤解しました。 長いリスト(100以上の要素を指していたもの)のドロップダウンリストではありません。 ** Textbox **と** dropdowns **の両方を含むのは、実際にはElementsです。要するに、それは数多くのフィールドを持つ形式です。 – Ashish

+0

しかし、あなたの答えは私の周りを働くアイデアを与えました。 私にお試しください。それがうまくいくなら、私は正解を投稿します。 – Ashish