美好的一天,您将开始使用浓缩咖啡,并尝试检查TextInputLayout的PasswordVisibilityToggleEnabled按钮是否可见。我知道此按钮是ID为{R.id.text_input_password_toggle)
的CheckableImageButton,但不确定如何在Espresso中获取它。
我尝试这样做:
onView(withId(R.id.passwordTextInputLayout)).check(hasDescendant(withId(R.id.text_input_password_toggle))).check(matches(not(isDisplayed())));
但这不起作用。我猜想我可能不得不根据StackOverflow上的一些问题使用自定义Matcher,但不确定是否正确执行了该操作。
public static Matcher<View> getPasswordToggleView(final Matcher<View> parentMatcher, int id) {
return new TypeSafeMatcher<View>() {
@Override
protected boolean matchesSafely(View view) {
if(!(view.getParent() instanceof ViewGroup)) {
return parentMatcher.matches(view.getParent());
}
ViewGroup group = (ViewGroup) view.getParent();
return parentMatcher.matches(view.getParent()) && view.getId() == id;
}
@Override
public void describeTo(Description description) {
description.appendText("get View with matching id");
}
};
}
并尝试像这样使用它,但仍然无法正常工作:
onView(getPasswordToggleView(withId(R.id.passwordTextInputLayout), R.id.text_input_password_toggle)).check(matches(not(isDisplayed())));
有什么想法吗?
答案 0 :(得分:0)
只要(显然)已经使用切换按钮的ID,您就可以执行onView(withId(R.id.text_input_password_toggle)).check(doesNotExist())
来检查切换按钮是否未显示。如果passwordToggleEnabled
为假,则此验证将成功。
doesNotExist
是android.support.test.espresso.assertion