2017-01-10 3 views
1

У меня есть это приложение, которое я тестирую там, где мне нужно войти в систему, а затем переходит к другому действию, а затем переходит к другому действию, где я могу выйти из системы. Проблема в том, что моя кнопка выхода из системы находится в нижней части моего ScrollView и не отображается на экране, а эспрессо не находит кнопку. Сначала мне нужно прокрутить список, а затем нажмите кнопку. Можете ли вы рассказать мне, как я могу прокрутить страницу и затем нажать кнопку?Как прокрутить вниз и выполнить щелчок кнопкой с эспрессо-тестированием?

@Before 
    public void init() { 
     // Specify a valid string. 
     loginText = "something"; 
     passwordText = "something"; 
    } 

    @Test 
    public void loginAction() { 

     mBrowserActivityMonitor = getInstrumentation().addMonitor(MainActivity.class.getName(), null, false); 

     // Type text and then press the button. 
     onView(withId(R.id.editText_username)) 
       .perform(typeText(loginText), closeSoftKeyboard()); 
     onView(withId(R.id.editText_password)) 
       .perform(typeText(passwordText), closeSoftKeyboard()); 
     onView(withId(R.id.button_login)).perform(click()); 

     Activity activity = mBrowserActivityMonitor.waitForActivityWithTimeout(10000); 

     onView(withId(R.id.button_left)).perform(click()); 

     Activity activity2 = mBrowserActivityMonitor.waitForActivityWithTimeout(10000); 


     onView(withId(R.id.button_logout)).perform(click()); **//does not recognize** 

     Activity activity3 = mBrowserActivityMonitor.waitForActivityWithTimeout(10000); 
     assertNotNull(activity3); //To see if activity 2 (Profile) is opened 

Это журнал ошибок:

Вызванный: java.lang.RuntimeException: Действие не будет выполнено , потому что цель вид не соответствует одному или более из следующих Ограничения: Пользователю отображается не менее 90 процентов области обзора.

ответ

2
onView(withId(R.id.button_logout)).perform(scrollTo(), click()); 

Если вид вы работаете, находятся внутри ScrollView (вертикального или горизонтального), рассмотреть предшествующие действия, которые требуют представления для отображения (например, нажмите() и TypeText()) с scrollTo (). Это обеспечивает отображение представления перед тем, как перейти к другому действию:

onView (...). Выполнить (scrollTo(), click());

Примечание: Функция scrollTo() не будет иметь эффекта, если представление уже отображается, поэтому вы можете безопасно использовать его в случаях, когда представление отображается из-за большего размера экрана (например, когда ваши тесты выполняются как на меньших, так и на больших разрешение экрана).

Вы можете проверить их документацию: https://google.github.io/android-testing-support-library/docs/espresso/basics/index.html#performing-an-action-on-a-view

+0

Не помогает. Он говорит, что он не находит кнопку button_logout id – Jose

+0

@Jose, пожалуйста, обновите свой вопрос с помощью xml – quanlt