2016-09-29 1 views
0

Если один из моих фрагментов, rattingfragment, я должен выполнить щелчок. Если нет, выполните другие действия.Как я знаю, отображается ли один фрагмент (тестовый интерфейс)

Как я знаю, что это фрагмент на моем экране?

Android UI Tests. Ниже мой код, чтобы проверить РЕДАКТИРОВАНИЕ КОД:

@Rule 
    public ActivityTestRule mActivityRule = new ActivityTestRule<>(MainActivity.class); 

    @After 
    public void setUp(){ 
     Logout(); 
    } 
    @Test 
    public void shouldOfferRide(){ 
     SystemClock.sleep(1500); 
     Login(); 
     onView(withId(R.id.searchButton)).perform(typeText(emailSearch)); 
     onView(withId(R.id.searchButton)).perform(pressImeActionButton()); 
     onView(withId(R.id.community_user_ask_button)).perform(click()); 
     SystemClock.sleep(1500); 
     onView(withId(R.id.button1)).perform(click()); 
     onView(withId(R.id.send_request)).perform(click()); 
     SystemClock.sleep(1500); 
     ((MainActivity)mActivityRule.getActivity()).navItemClick(4); 
     SystemClock.sleep(3500); 
     LoginMyrides(); 
     onView(withId(R.id.my_rides_tab_bar)).perform(click()); 
     SystemClock.sleep(1000); 

     {I have to know is ratingfragment before perform click below} 

     onView(withId(R.id.rating_bar)).perform(click()); 
     onView(withId(R.id.deny_btn)).perform(click()); 
    } 

     public void Login(){ 
     onView(withId(R.id.edt_new_login_email)).perform(typeText(emailLogin)); 
     onView(withText(R.string.next_button)).perform(click()); 
     onView(withId(R.id.edt_new_password)).perform(typeText(senha)); 
     onView(withText(R.string.login_new_pass)).perform(click()); 
    } 

    public void Logout(){ 
     new SessionManager(mActivityRule.getActivity()).logoutUser(); 
    } 
} 
+0

Существует много решений для этого случая, но лучшим является метод instanceOf, через который вы можете получить то, что является текущим фрагментом. используйте его как if (currentFragmet instanceOf rattingfragment) {} – HAXM

+0

http://stackoverflow.com/a/24589081/4961126 – HAXM

ответ

0

Эспрессо был разработан для испытаний, которые могут следовать шаг за шагом рецепт без каких-либо решений. Вы должны учитывать ситуации, когда фрагмент будет виден и когда этого не будет. Затем напишите отдельные тесты для каждого сценария.

0
If you want to know it in activity, then just use: 

Fragment fragment = getFragmentManager().findFragmentByTag(stringTag); 
if (fragment != null) { 
     //here it means the fragment is been shown 
} 

And If you want to know it in fragment then do your stuff in fragment's any of the following life cycle method: 


onAttach(); 
onCreate(); 
onCreateView(); 
onActivityCreated(); 
onStart(); //or 
onResume(); 

Это будет вызвана, как только ваш фрагмент будет получить показано на экране. Справка: https://developer.android.com/guide/components/fragments.html#Creating

0

Используйте следующую функцию в фрагменте:

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 

    if (isVisibleToUser) { 
     //fragment is visible on screen...do your stuff here 
    } 
    else { 
     // fragment is no longer visible 
    } 
} 
Смежные вопросы