2012-06-19 3 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

Я столкнулся с аналогичным вопросом. Кажется, что роботизм автоматически прокручивается при поиске текста, а также в виде представлений. Скажем в методе A, он ищет некоторые представления с идентификаторами ресурсов, а затем прокручивается вниз, чтобы найти все эти виды, если прокрутка вверх или прокрутка вверх в методе B, это не сработает; если прокрутка вверх или прокрутка вверх, только в методе A, она работает. Довольно странно.

Смежные вопросы