Как эспрессо может получить представление, удовлетворяющее списку ViewMatchers?

Я прочитал документация Espresso с помощью метода onView(), который работает на одном представлении.

Кто-нибудь знает, как я могу:

  1. Получите все просмотры, которые удовлетворяют ViewMatcher

  2. Получите представление, которое удовлетворяет списку ViewMatchers

Например, я хочу знать, сколько предметов в recyclerView!

developer.android.com/training/testing/espresso/lists
Kartik Shandilya 04.07.2019 14:20
1
1
434
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Get a view that satisfies a list of ViewMatchers

Это можно сделать с помощью сопоставителя Hamcrest allOf

import static org.hamcrest.CoreMatchers.allOf;

onView(allOf(withId(R.id.exampleView), 
             withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
        .check(matches(isCompletelyDisplayed()))
        .check(matches(withHint(R.string.exampleViewHint)));

Get all views that satisfy a ViewMatcher

Что ж, возможно, это начало в правильном направлении: Ниже приведен пример того, как найти все представления Android, помеченные заданным значением.

От: https://gist.github.com/orip/5566666 и http://stackoverflow.com/a/8831593/37020

package com.onavo.android.common.ui;

import android.view.View;
import android.view.ViewGroup;

import java.util.LinkedList;
import java.util.List;

/**
 * Based on http://stackoverflow.com/a/8831593/37020 by by Shlomi Schwartz
 * License: MIT
 */
public class ViewGroupUtils {
    public static List<View> getViewsByTag(View root, String tag) {
        List<View> result = new LinkedList<View>();

        if (root instanceof ViewGroup) {
            final int childCount = ((ViewGroup) root).getChildCount();
            for (int i = 0; i < childCount; i++) {
                result.addAll(getViewsByTag(((ViewGroup) root).getChildAt(i), tag));
            }
        }

        final Object rootTag = root.getTag();
        // handle null tags, code from Guava's Objects.equal
        if (tag == rootTag || (tag != null && tag.equals(rootTag))) {
            result.add(root);
        }

        return result;
    }
}

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