Эспрессо выполнить клик

Я пытался написать просто тест, используя «эспрессо».

@RunWith(AndroidJUnit4.class)
@LargeTest
public class EspressoTest {
    @Rule
    public ActivityRule<IntroActivity> mActivityRule = new ActivityRule(IntroActivity.class);

    public EspressoTest() {
        IdlingPolicies.setMasterPolicyTimeout(1000, TimeUnit.SECONDS);
    }

    @Test
    public void testShouldClickEmailButton() {
            onView(withText(R.string.in_email)).perform(click());
    }


}

но я получил ошибку:

PerformException: Error performing 'single click' on view 'with string from resource id: <2131099761>[in.email] value: Login With Email'.

Я пробую разные фреймворки для тестирования, и robotium пока лучший для меня, но если кто-то может помочь исправить эту ошибку, я буду очень благодарен

UPD более подробный журнал

Причина: java.lang.RuntimeException: действие не будет выполнено, поскольку целевое представление не соответствует одному или нескольким из следующих ограничений: пользователю отображается не менее 90 процентов области представления. Целевое представление: "DSeparatedButton{id=2131427459, res-name=button_login, visibility=VISIBLE, width=622, height=120, has-focus=false, has-focusable=true, has-window-focus=true, is- clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input- соединение = ложь, x = 0,0, y = 333,0, текст = Войти с помощью электронной почты, тип ввода = 0, ime-target = ложь, has-links = ложь}"

Также у меня есть небольшая анимация заставки

введите здесь описание изображения


person Gorets    schedule 14.07.2015    source источник
comment
Action will not be performed because the target view does not match one or more of the following constraints ты это читал?   -  person Jared Burrows    schedule 14.07.2015
comment
@JaredBurrows да, я вижу, у меня есть анимация кнопки слайда вверх, но как я могу ждать 1 секунду? Я попробовал Thread.sleep(1000); и т.д., но это не помогает   -  person Gorets    schedule 14.07.2015
comment
Ах, спасибо за обновление поста. Я думаю, что вы поступаете правильно, используя эспрессо. Проверьте это: stackoverflow.com/questions/21417954/espresso-thread-sleep.   -  person Jared Burrows    schedule 14.07.2015
comment
спасибо, я сейчас попробую, это действительно странный случай, потому что у меня нет этой проблемы в роботиуме, но я получаю ненадежные тесты и ошибки, такие как OOM в эмуляторах (не реальных устройствах), поэтому я решил перейти на другие один   -  person Gorets    schedule 14.07.2015
comment
Ах, это два разных фреймворка от разных авторов. Это хорошо, поэтому, когда следующий человек столкнется с этим, мы можем просто найти этот вопрос :)   -  person Jared Burrows    schedule 14.07.2015
comment
поэтому результат плохой, потому что на самом деле кнопка находится в представлении, и нам не нужно ждать. И еще подробности об анимации: я не делал никаких преобразований с кнопкой, просто заставка поверх кнопки скрывает с анимацией 1 сек.   -  person Gorets    schedule 14.07.2015
comment
Привет @Gorets, если бы вы предоставили немного кода для IntroActivity, это помогло бы. В противном случае, есть много догадок. Вы получаете ответы, которые включают передовой опыт, но не обязательно решения. Нам нужно знать, как вы построили рассматриваемое представление. Все, что мы знаем прямо сейчас, это то, что ваш сопоставитель терпит неудачу.   -  person OYRM    schedule 24.02.2016
comment
Чтобы дождаться тестового примера или завершить выполнение тестового примера, используйте этот. SystemClock.sleep(2000); ///2 секунды   -  person Nikunjkumar Kapupara    schedule 26.12.2017


Ответы (2)


Метод onView используется только для представлений, которые видны на экране на 100%, поэтому Espresso может правильно их протестировать. Я предлагаю использовать метод onData для проверки представления. Это должно работать:

    onData(withText(R.string.in_email)).perform(click());

Я могу помочь вам больше, если это не будет ответом, который вы ищете. Просто дайте мне знать, если это не сработает. Удачи!

person sunlover3    schedule 17.02.2016
comment
Пробовал, но не сработало, у меня не получается, когда я запускаю его на физическом устройстве Samsung s7 внутри firebase, если я вижу результирующее видео, часть экрана черная, похоже, он был изменен для видео. - person Daniel Gomez Rico; 25.10.2017

person    schedule
comment
Объяснение всегда приветствуется с кодом. - person Jérémie Bertrand; 09.09.2015