如何使用 espresso 匹配器作为 If else 语句的条件?
How to use espresso matcher as a condition for If else statement?
我的代码片段如下所示:
private void SelectOnline(String env) {
onView(withText("Some Text")).perform(click());
if (onView(withText(env)).check(matches(isChecked()))) {
onView(withId(R.id.dialogCancel)).perform(click());
}else {
onView(withText(env)).perform(click());
}
}
我收到一条消息错误
required: boolean
found: ViewInteraction
这意味着您不能使用 espresso View Matchers 作为 if..else 的条件。有没有其他方法可以实现 if..else 语句?
Espresso 的设计旨在阻止开发人员使用条件语句,因此没有官方支持的方法来执行此操作。
但是,您可以尝试一些技巧。我使用 try/catch 语句。在您的情况下,它类似于:
private void SelectTransitBackendOnline(String env) {
onView(withText("Some Text")).perform(click());
try {
onView(withText(env)).check(matches(isChecked())))
onView(withId(R.id.dialogCancel)).perform(click());
} catch (AssertionFailedError e) {
onView(withText(env)).perform(click());
}
}
根据您在 try 块中的操作,更改 catch 块的异常。我想点击cancel_button如果存在,所以我将其更改为:
try {
onView(withId(R.id.cancel_button)).perform(click());
} catch (NoMatchingViewException ignore) {
}
我的代码片段如下所示:
private void SelectOnline(String env) {
onView(withText("Some Text")).perform(click());
if (onView(withText(env)).check(matches(isChecked()))) {
onView(withId(R.id.dialogCancel)).perform(click());
}else {
onView(withText(env)).perform(click());
}
}
我收到一条消息错误
required: boolean
found: ViewInteraction
这意味着您不能使用 espresso View Matchers 作为 if..else 的条件。有没有其他方法可以实现 if..else 语句?
Espresso 的设计旨在阻止开发人员使用条件语句,因此没有官方支持的方法来执行此操作。
但是,您可以尝试一些技巧。我使用 try/catch 语句。在您的情况下,它类似于:
private void SelectTransitBackendOnline(String env) {
onView(withText("Some Text")).perform(click());
try {
onView(withText(env)).check(matches(isChecked())))
onView(withId(R.id.dialogCancel)).perform(click());
} catch (AssertionFailedError e) {
onView(withText(env)).perform(click());
}
}
根据您在 try 块中的操作,更改 catch 块的异常。我想点击cancel_button如果存在,所以我将其更改为:
try {
onView(withId(R.id.cancel_button)).perform(click());
} catch (NoMatchingViewException ignore) {
}