Я прочитал документация Espresso с помощью метода onView()
, который работает на одном представлении.
Кто-нибудь знает, как я могу:
Получите все просмотры, которые удовлетворяют ViewMatcher
Получите представление, которое удовлетворяет списку ViewMatchers
Например, я хочу знать, сколько предметов в recyclerView
!
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;
}
}