2017-03-17 83 views
0

我使用Appium + Java自動化Tablet應用程序。在一個屏幕上,我有100多個字段(文本框+下拉菜單)自動執行哪個滾動視圖。在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; 
    } 
} 

問題:灌裝幾個(比如7)字段後,它給我NoSuchElementException異常,因爲我在屏幕滾動到移動到下一個字段(它是這樣:屏幕包含7個字段&您必須滾動才能查看下面的字段,並且在顯示屏中查看之前,automator也不會識別該元素)。

我試過的是,我沒有捕獲NoSuchElementException並執行滾動操作。但這不是正確的方法,因爲如果已經搜索的元素實際上不存在,那麼它也會捕獲NoSuchElementException並執行滾動操作。

建議一些很好的方法來消除這個問題。讓我知道是否需要任何細節。

+0

是否有可能在下拉列表中的2個項目(或更多)將具有相同的值? –

+0

@DavidEp,不,它不會。 與該問題有關嗎? – Ashish

+0

是的 - 我想我可以給你一個答案 –

回答

0

當我從你瞭解的代碼工作正常,所以我會做,使這個測試完成:

  1. (正如你已經做了)按下拉列表和搜索項目 - 在這種你沒有正確地忽略NoSuchElementException。
  2. 保存最後一個可見項目的名稱(如果您需要任何代碼片段幫助,請讓我知道)
  3. 再次執行滾動並搜索項目 - >再次保存最後一個項目。
  4. 經過幾次迭代後,最後一項將保持不變 - >這意味着我們在列表的末尾,在這種情況下,您的測試失敗。
+0

我想你錯誤地理解了我的問題。 它不是具有長列表(我提到100多個元素)的選項的下拉列表。它實際上是包含**文本框**和**下拉**的「元素」。總之我的意思是,這是形式衆多的領域。 – Ashish

+0

但是,您的回答給了我一個解決問題的方法。 讓我試試。如果有效,我會發布正確的答案。 – Ashish