我的代码中有一个带有相应API调用的登录UI,我想使用Espresso进行测试。当我单击登录按钮时,只要API调用正在执行,就会进行API调用并显示ProgressBar,然后一旦得到响应,它的可见性就会恢复。大多数情况下,调用是非常即时的,因此如果我在ProgressBar视图上检查isDisplayed(),我会得到错误。以下是代码 -
onView(withId(R.id.edit_text_username)).perform(typeText("asd"));
onView(withId(R.id.edit_text_password)).perform(typeText("asd"), closeSoftKeyboard());
onView(withId(R.id.forward_button)).check(matches(isEnabled()));
onView(withId(R.id.forward_button)).perform(click());
onView(withId(R.id.progress_bar_gateway)).check(matches(isDisplayed()));
有没有办法检查ProgressBar可见性是否从已消失中切换 - >可见 - >走了吗?
答案 0 :(得分:0)
你应该检查uiautomator - uiwatcher。 Uiautomator在仪器上运行。所以你可以将你的uiwatcher代码放入浓缩咖啡中。
现在出现在你的情况中 - 想法是在ProgressBar visibility
中检测ui变化。注册此活动的观察者,您可以添加"what to do code" at gone -> visible -> gone
。
示例代码 -
public class watchProgressbar implements UiWatcher {
public boolean checkForCondition() {
//Add uiautomator code to detect the visibility change of pregress bar.
//Add what you want to do when a state change is detected.
}
}
希望这会有所帮助。example uiautomator和espresso一起使用。