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

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

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

Тесты пользовательского интерфейса Android.
Ниже мой код для тестирования
РЕДАКТИРОВАТЬ
КОД:

   @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();
    }
}

3 ответа

  1. 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

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

     @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
        }
     }
    
  3. Эспрессо был разработан для испытаний, которые могут следовать шаг за шагом рецепт без каких-либо решений. Следует учитывать ситуации, когда фрагмент будет виден, а когда его не будет. Затем напишите отдельные тесты для каждого сценария.