【发布时间】:2015-05-04 06:26:01
【问题描述】:
我有一个自定义的 ImageButton 设计不完全可见,所以当我执行点击操作时,我收到此错误:
android.support.test.espresso.PerformException: Error performing 'single click' on view 'with id: test.com.myproject.app:id/navigationButtonProfile'.
Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints:
at least 90 percent of the view's area is displayed to the user.
at android.support.test.espresso.ViewInteraction$1.run(ViewInteraction.java:138)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
按钮的一小部分在屏幕之外(即在顶部被裁剪),可能 12% 的按钮在屏幕之外。这是设计使然,无法滚动或执行任何视图操作以使其可见。 有谁知道如何克服这个 90% 的限制?
解决方案: 我按照建议创建了自己的单击操作,并且效果很好。 我从Google Espresso复制了类,在这个方法中从90改成了75:
@Override
@SuppressWarnings("unchecked")
public Matcher<View> getConstraints() {
Matcher<View> standardConstraint = isDisplayingAtLeast(75);
if (rollbackAction.isPresent()) {
return allOf(standardConstraint, rollbackAction.get().getConstraints());
} else {
return standardConstraint;
}
}
【问题讨论】:
-
代码的 rollbackAction 部分给了我编译错误,无法自动导入
标签: android testing android-espresso ui-testing