Эспрессо: действие над кнопкой в ​​нижнем колонтитуле ListView

У ListView нижний колонтитул выглядит так (footer.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

    <Button
        android:id="@+id/btn_cancel"
        style="@style/MyApp.Form.Component.Button"
        android:text="@string/action_cancel"/>

    <Button
        android:id="@+id/btn_confirm"
        style="@style/MyApp.Form.Component.Button"
        android:text="@string/action_next"/>
</RelativeLayout>

При записи сценария (через "Тест эспрессо записи" в Android Studio) я получил следующий код, чтобы нажать кнопку "Далее":

private void clickNext() {
    ViewInteraction appCompatButton2 = onView(
            allOf(withId(R.id.btn_confirm), withText("Next"),
                    withParent(childAtPosition(
                            withId(R.id.lv_products), 5))));
    appCompatButton2.perform(click());
}

Это работает хорошо, но... когда тест запускается на устройстве с низким разрешением, я получаю ошибку:

android.support.test.espresso.PerformException: Ошибка при выполнении "одного клика" при просмотре (с идентификатором: com.comarch.msc.emulator:id/btn_confirm и с текстом: is "Next" и соответствует родительскому элементу: Child на позиции 5 в родительском с идентификатором: com.comarch.msc.emulator:id/lv_products)'. (...) Причина: java.lang.RuntimeException: Действие не будет выполнено, потому что целевое представление не соответствует одному или нескольким из следующих ограничений: по крайней мере 90 процентов области представления отображается пользователю.

Как настроить тест для более низких разрешений?

1 ответ

Решение

Проблема в том, что весь нижний колонтитул не отображается на экране (отображается только часть). Вы можете попробовать выполнить действие swipeUp, прежде чем нажать на кнопку. Или, если смахивание не помогает, просто проверьте, почему вы не видите его на маленьких экранах.

Другие вопросы по тегам