2012-06-19 71 views
0

我試圖使用Robotium驗證大型列表的內容,並且由於某種原因,一旦程序到達可見列表的底部,Robotium將開始滾動,並保持滾動狀態,直到它到達列表的底部。有什麼我可以做的,以防止這種情況發生?理想情況下,程序將驗證可見內容,足夠滾動以顯示未驗證內容的一部分,然後一旦驗證完畢,滾動到底部,最終允許測試應用程序驗證列表中的所有內容。停止使用Robotium滾動

這裏是我使用的代碼:

public void testCatalogLinkContent(){ 
     //VERIFY USER IS ON HOMEPAGE 
     try { 
      solo.sleep(3000); 
      assertTrue(solo.searchText(" Apps")) ; 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 

     } 
     //CLICK ON CATALOG  
     try{ 
      solo.clickOnText(" Apps"); 
       }catch(Exception e){ 
        e.printStackTrace(); 
       } 
     //Search for Music in menu 
     if(solo.searchText(RECOMMENDED)==false){ 
      Log.e(TAG, RECOMMENDED + " Not found!!!"); 

     }else{ 
      Log.i(TAG, RECOMMENDED + " Found"); 
     } 

     //Search for UAT in menu 
     if(solo.searchText(UAT)==false){ 
      Log.e(TAG, UAT + " Not found!!!"); 

     }else{ 
      Log.i(TAG, UAT + " Found"); 
     } 

     //Search for NEW APPS in menu 
     if(solo.searchText(NEW)==false){ 
      Log.e(TAG, NEW + " Not found!!!"); 

     }else{ 
      Log.i(TAG, NEW + " Found"); 
     } 

     //Search for TOP SELLERS in menu 
     if(solo.searchText(TOPSELLER)==false){ 
      Log.e(TAG, TOPSELLER + " Not found!!!"); 

     }else{ 
      Log.i(TAG, TOPSELLER + " Found"); 
     } 

     if(solo.searchText(TOPDOWNLOAD)==false){ 
      Log.e(TAG, TOPDOWNLOAD + " Not found!!!"); 

     }else{ 
      Log.i(TAG, TOPDOWNLOAD + " Found"); 
     } 

     //Search for EA in menu 
     if(solo.searchText(EA)==false){ 
      Log.e(TAG, EA + " Not found!!!"); 

     }else{ 
      Log.i(TAG, EA + " Found"); 
     } 

     //Search for FEATURED in menu 
     if(solo.searchText(FEATURED)==false){ 
      Log.e(TAG, FEATURED + " Not found!!!"); 

     }else{ 
      Log.i(TAG, FEATURED + " Found"); 
     } 
     //Search for GAMES in menu 
     if(solo.searchText(GAMES)==false){ 
      Log.e(TAG, GAMES + " Not found!!!"); 

     }else{ 
      Log.i(TAG, GAMES + " Found"); 
     } 
     //Search for APPS in menu 
     if(solo.searchText(APPS)==false){ 
      Log.e(TAG, APPS + " Not found!!!"); 

     }else{ 
      Log.i(TAG, APPS + " Found"); 
     } 
     //Search for SOCIAL in menu 
     if(solo.searchText(SOCIAL)==false){ 
      Log.e(TAG, SOCIAL + " Not found!!!"); 

     }else{ 
      Log.i(TAG, SOCIAL + " Found"); 
     } 
     //Search for ENTERTAINMENT in menu 
     if(solo.searchText(ENTERTAINMENT)==false){ 
      Log.e(TAG, ENTERTAINMENT + " Not found!!!"); 

     }else{ 
      Log.i(TAG,ENTERTAINMENT + " Found"); 
     } 
     //Search for THEMES in menu 
     if(solo.searchText(THEMES)==false){ 
      Log.e(TAG, THEMES + " Not found!!!"); 

     }else{ 
      Log.i(TAG, THEMES + " Found"); 
     } 
     //Search for TOOLS in menu 
     if(solo.searchText(TOOLS)==false){ 
      Log.e(TAG, TOOLS + " Not found!!!"); 

     }else{ 
      Log.i(TAG, TOOLS + " Found"); 
     } 
     //Search for NEWSin menu 
     if(solo.searchText(NEWS)==false){ 
      Log.e(TAG, NEWS + " Not found!!!"); 

     }else{ 
      Log.i(TAG, NEWS + " Found"); 
     } 
     //Search for READING in menu 
     if(solo.searchText(READING)==false){ 
      Log.e(TAG, READING + " Not found!!!"); 

     }else{ 
      Log.i(TAG, READING + " Found"); 
     } 
     //Search for MONEY in menu 
     if(solo.searchText(MONEY)==false){ 
      Log.e(TAG, MONEY + " Not found!!!"); 

     }else{ 
      Log.i(TAG, MONEY + " Found"); 
     } 
     //Search for SHOPPING in menu 
     if(solo.searchText(SHOPPING)==false){ 
      Log.e(TAG, SHOPPING + " Not found!!!"); 

     }else{ 
      Log.i(TAG, SHOPPING + " Found"); 
     } 
     //Search for FITNESS in menu 
     if(solo.searchText(FITNESS)==false){ 
      Log.e(TAG, FITNESS + " Not found!!!"); 

     }else{ 
      Log.i(TAG, FITNESS + " Found"); 
     } 
     //Search for TRAVEL in menu 
     if(solo.searchText(TRAVEL)==false){ 
      Log.e(TAG,TRAVEL + " Not found!!!"); 

     }else{ 
      Log.i(TAG, TRAVEL + " Found"); 
     } 
     //Search for BUSINESS in menu 
     if(solo.searchText(BUSINESS)==false){ 
      Log.e(TAG, BUSINESS + " Not found!!!"); 

     }else{ 
      Log.i(TAG, BUSINESS + " Found"); 
     } 
     //Search for SPANISH in menu 
     if(solo.searchText(SPANISH)==false){ 
      Log.e(TAG, SPANISH + " Not found!!!"); 

     }else{ 
      Log.i(TAG, SPANISH + " Found"); 
     } 
    } 

回答

0

因此,要解決這個問題,這裏是我必須做的:

public void testCatalogLinkContent(){ 
     //VERIFY USER IS ON HOMEPAGE 
     try { 
      solo.sleep(3000); 
      assertTrue(solo.searchText("Apps")) ; 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 

     } 
     //CLICK ON CATALOG  
     try{ 
      solo.clickOnText("Apps"); 
       }catch(Exception e){ 
        e.printStackTrace(); 
       } 
     //Search for Music in menu 
     if(solo.searchText(RECOMMENDED)==false){ 
      Log.e(TAG, RECOMMENDED + " Not found!!!"); 

     }else{ 
      Log.i(TAG, RECOMMENDED + " Found"); 
     } 

     //Search for UAT in menu 
     if(solo.searchText(UAT)==false){ 
      Log.e(TAG, UAT + " Not found!!!"); 

     }else{ 
      Log.i(TAG, UAT + " Found"); 
     } 

     //Search for NEW APPS in menu 
     if(solo.searchText(NEW)==false){ 
      Log.e(TAG, NEW + " Not found!!!"); 

     }else{ 
      Log.i(TAG, NEW + " Found"); 
     } 

     //Search for TOP SELLERS in menu 
     if(solo.searchText(TOPSELLER)==false){ 
      Log.e(TAG, TOPSELLER + " Not found!!!"); 

     }else{ 
      Log.i(TAG, TOPSELLER + " Found"); 
     } 
     //Search for top downloaded 
     if(solo.searchText(TOPDOWNLOAD)==false){ 
      Log.e(TAG, TOPDOWNLOAD + " Not found!!!"); 

     }else{ 
      Log.i(TAG, TOPDOWNLOAD + " Found"); 
     } 

     //Search for EA in menu 
     if(solo.searchText(EA)==false){ 
      Log.e(TAG, EA + " Not found!!!"); 

     }else{ 
      Log.i(TAG, EA + " Found"); 
     } 
     solo.scrollUp(); 
     //Search for FEATURED in menu 
     if(solo.searchText(FEATURED)==false){ 
      Log.e(TAG, FEATURED + " Not found!!!"); 

     }else{ 
      Log.i(TAG, FEATURED + " Found"); 
     } 
     solo.scrollUp(); 
     //Search for GAMES in menu 
     if(solo.searchText(GAMES)==false){ 
      Log.e(TAG, GAMES + " Not found!!!"); 

     }else{ 
      Log.i(TAG, GAMES + " Found"); 
     } 
     solo.scrollUp(); 
     //Search for APPS in menu 
     if(solo.searchText(APPS)==false){ 
      Log.e(TAG, APPS + " Not found!!!"); 

     }else{ 
      Log.i(TAG, APPS + " Found"); 
     } 
     solo.scrollUp(); 
     //Search for SOCIAL in menu 
     if(solo.searchText(SOCIAL)==false){ 
      Log.e(TAG, SOCIAL + " Not found!!!"); 

     }else{ 
      Log.i(TAG, SOCIAL + " Found"); 
     } 
     solo.scrollUp(); 
     //Search for ENTERTAINMENT in menu 
     if(solo.searchText(ENTERTAINMENT)==false){ 
      Log.e(TAG, ENTERTAINMENT + " Not found!!!"); 

     }else{ 
      Log.i(TAG,ENTERTAINMENT + " Found"); 
     } 
     solo.scrollUp(); 
     //Search for MUSIC in menu 
       if(solo.searchText(MUSIC)==false){ 
        Log.e(TAG, MUSIC + " Not found!!!"); 

       }else{ 
        Log.i(TAG, MUSIC + " Found"); 
       } 
       solo.scrollUp(); 
     //Search for THEMES in menu 
     if(solo.searchText(THEMES)==false){ 
      Log.e(TAG, THEMES + " Not found!!!"); 

     }else{ 
      Log.i(TAG, THEMES + " Found"); 
     } 
     solo.scrollUp(); 
     //Search for TOOLS in menu 
     if(solo.searchText(TOOLS)==false){ 
      Log.e(TAG, TOOLS + " Not found!!!"); 

     }else{ 
      Log.i(TAG, TOOLS + " Found"); 
     } 
     solo.scrollUp(); 
     //Search for NEWSin menu 
     if(solo.searchText(NEWS)==false){ 
      Log.e(TAG, NEWS + " Not found!!!"); 

     }else{ 
      Log.i(TAG, NEWS + " Found"); 
     } 
     solo.scrollUp(); 
     //Search for SPORTS in menu 
       if(solo.searchText(SPORTS)==false){ 
        Log.e(TAG, SPORTS + " Not found!!!"); 

       }else{ 
        Log.i(TAG, SPORTS + " Found"); 
       } 
       solo.scrollUp(); 
     //Search for READING in menu 
     if(solo.searchText(READING)==false){ 
      Log.e(TAG, READING + " Not found!!!"); 

     }else{ 
      Log.i(TAG, READING + " Found"); 
     } 
     solo.scrollUp(); 
     //Search for MONEY in menu 
     if(solo.searchText(MONEY)==false){ 
      Log.e(TAG, MONEY + " Not found!!!"); 

     }else{ 
      Log.i(TAG, MONEY + " Found"); 
     } 
     //Search for SHOPPING in menu 
     if(solo.searchText(SHOPPING)==false){ 
      Log.e(TAG, SHOPPING + " Not found!!!"); 

     }else{ 
      Log.i(TAG, SHOPPING + " Found"); 
     } 
     //Search for FITNESS in menu 
     if(solo.searchText(FITNESS)==false){ 
      Log.e(TAG, FITNESS + " Not found!!!"); 

     }else{ 
      Log.i(TAG, FITNESS + " Found"); 
     } 
     //Search for TRAVEL in menu 
     if(solo.searchText(TRAVEL)==false){ 
      Log.e(TAG,TRAVEL + " Not found!!!"); 

     }else{ 
      Log.i(TAG, TRAVEL + " Found"); 
     } 
     //Search for BUSINESS in menu 
     if(solo.searchText(BUSINESS)==false){ 
      Log.e(TAG, BUSINESS + " Not found!!!"); 

     }else{ 
      Log.i(TAG, BUSINESS + " Found"); 
     } 
     //Search for SPANISH in menu 
     if(solo.searchText(SPANISH)==false){ 
      Log.e(TAG, SPANISH + " Not found!!!"); 

     }else{ 
      Log.i(TAG, SPANISH + " Found"); 
     } 
    } 

前(後)每個搜索,我插solo.scrollUp();

這不是最好的方法,也不是最有效的方法來實現這一點,但它現在起作用。

謝謝大家的幫助。

+0

searchText中有一個參數可以阻止它滾動。查看javadoc獲取更多信息。 – Renas

0

Robotium的工作方式是通過「掃描」的佈局,所以當你指示它solo.searchText()它會尋找任何你指定的,如果它不在當前可見區域找不到它,它會滾動您的視圖直到找到它(或放棄)。我的猜測是它沒有找到文本" Apps",因爲您的文本確實是"Apps",並且由於找不到它,您將獲得您指定的行爲「無限滾動」。

+0

不,它會找到應用程序。在哪裏停止尋找事物是在遊戲之後。我有從上到下列出的項目。所以如果它只是一個搜索的問題,直到它找到它,它會很好地滾動。但事實並非如此。一旦找不到,它似乎一直滾動到底部。 – BlackHatSamurai

+0

所以,我很困惑,它的行爲如同設計?也就是說,它沒有找到某種東西,而是繼續搜索。你是否試圖斷言它不是*那裏? – dmon

+0

我在說的是,我正在尋找的所有物品都在那裏。但是當我運行該程序時,Robotium一直無法看到文本,一直滾動到底部。這導致三分之一的測試失敗,因爲正在搜索的項目不在屏幕上,但實際上在那裏。 – BlackHatSamurai

0

我遇到過類似的問題。 似乎robotium在搜索文本時自動向下滾動,但也是視圖。在方法A中說,它使用資源ID搜索一些視圖,然後向下滾動到底部以查找所有視圖,如果在方法B中向上滾動或滾動到頂部,則不起作用;如果向上滾動或僅在方法A中滾動到頂部,它將起作用。很奇怪的東西。