matches(not(isDisplayed())) 失败并出现 NoMatchingViewException
matches(not(isDisplayed())) fails with NoMatchingViewException
我正在尝试测试 UI 视图是否存在。视图选择器如下:
public static ViewInteraction onMyTestUi() {
return onView(withId(R.id.myTestId));
}
选择器在检查视图是否显示时工作正常,但在检查视图是否显示时出错。我按如下方式使用它:
onMyTestUi().check(matches(not(isDisplayed())));
但是我收到以下错误:
com.google.android.apps.common.testing.ui.espresso.NoMatchingViewException:
No views in hierarchy found matching: with id: is If
the target view is not part of the view hierarchy, you may need to use
Espresso.onData to load it from one of the following
AdapterViews:android.widget.ListView{...}
这很奇怪。我正在检查 UI 是否存在,并且预计不会找到此视图。那为什么 Espresso 会抛出错误?
请在这里提出可能出了什么问题。
谢谢,
惊呆了!
需要改用doesNotExist()
。
找到 here.
如果视图在视图层次结构中但处于不可见状态(可见性设置为 'INVISIBLE'),请使用 not(isDisplayed)
。但是,如果视图在视图层次结构中根本不存在(例如,可见性设置为 'GONE'),则使用 doesNotExist()
。
onView(withText("")).check(doesNotExist());
也可以使用你的方法,但是是这样的:
onView(withId(R.id.next)).check(matches(not(isDisplayed())));
如果您想检查 View
是否 不可见 或 不存在 .
public static ViewAssertion isNotDisplayed() {
return new ViewAssertion() {
@Override
public void check(View view, NoMatchingViewException noView) {
if (view != null && isDisplayed().matches(view)) {
throw new AssertionError("View is present in the hierarchy and Displayed: "
+ HumanReadables.describe(view));
}
}
};
}
用法:
onView(withId(R.id.someView)).check(isNotDisplayed());
如果您检查视图可见性“withEffectiveVisibility”,则可以尝试此选项
onView(withId(R.id.YOURVIEW)).check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.GONE)))
我正在尝试测试 UI 视图是否存在。视图选择器如下:
public static ViewInteraction onMyTestUi() {
return onView(withId(R.id.myTestId));
}
选择器在检查视图是否显示时工作正常,但在检查视图是否显示时出错。我按如下方式使用它:
onMyTestUi().check(matches(not(isDisplayed())));
但是我收到以下错误:
com.google.android.apps.common.testing.ui.espresso.NoMatchingViewException: No views in hierarchy found matching: with id: is If the target view is not part of the view hierarchy, you may need to use Espresso.onData to load it from one of the following AdapterViews:android.widget.ListView{...}
这很奇怪。我正在检查 UI 是否存在,并且预计不会找到此视图。那为什么 Espresso 会抛出错误? 请在这里提出可能出了什么问题。
谢谢, 惊呆了!
需要改用doesNotExist()
。
找到 here.
如果视图在视图层次结构中但处于不可见状态(可见性设置为 'INVISIBLE'),请使用 not(isDisplayed)
。但是,如果视图在视图层次结构中根本不存在(例如,可见性设置为 'GONE'),则使用 doesNotExist()
。
onView(withText("")).check(doesNotExist());
也可以使用你的方法,但是是这样的:
onView(withId(R.id.next)).check(matches(not(isDisplayed())));
如果您想检查 View
是否 不可见 或 不存在 .
public static ViewAssertion isNotDisplayed() {
return new ViewAssertion() {
@Override
public void check(View view, NoMatchingViewException noView) {
if (view != null && isDisplayed().matches(view)) {
throw new AssertionError("View is present in the hierarchy and Displayed: "
+ HumanReadables.describe(view));
}
}
};
}
用法:
onView(withId(R.id.someView)).check(isNotDisplayed());
如果您检查视图可见性“withEffectiveVisibility”,则可以尝试此选项
onView(withId(R.id.YOURVIEW)).check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.GONE)))