onData(anything()).inAdapterView(withId(R.id.ScheduleOrderListViewListView))
.atPosition(0).perform(click());
50%的时间是长距离的--有一个好的解决办法吗?
发布于 2016-02-07 13:27:48
这是通过RPC将tap事件从测试代码传递到测试中的Android应用程序的一个不幸的副作用。在浓缩咖啡源代码中可以找到为什么有时执行长单击的最佳描述。
这个问题不大可能在短期内得到解决。避免这个问题的最佳选择是在更高规格的设备上运行您的测试。这是因为问题发生的可能性取决于系统负载。
发布于 2016-05-09 16:13:46
再加上查尔斯的话,我在这里找到了三个解决办法:https://github.com/misyobun/android-test-kit/issues/45
的解决方法1:(也许是最好的)是传递回滚操作,以防单击变成长时间的单击。如果发生这种情况,长时间的点击将被“取消”,浓缩咖啡将再次尝试点击。
/**
* Returns an action that performs a single click on the view.
*
* If the click takes longer than the 'long press' duration (which is possible) the provided
* rollback action is invoked on the view and a click is attempted again.
*
* This is only necessary if the view being clicked on has some different behaviour for long press
* versus a normal tap.
*
* For example - if a long press on a particular view element opens a popup menu -
* ViewActions.pressBack() may be an acceptable rollback action.
*
* <br>
* View constraints:
* <ul>
* <li>must be displayed on screen</li>
* <li>any constraints of the rollbackAction</li>
* <ul>
*/
public static ViewAction click(ViewAction rollbackAction) {
checkNotNull(rollbackAction);
return new GeneralClickAction(Tap.SINGLE, GeneralLocation.CENTER, Press.FINGER,
rollbackAction);
}
的解决方案2:不是“浓缩咖啡方式”,但它可能适合某些场景:
public class CallOnClickAction implements ViewAction {
@Override
public Matcher<View> getConstraints() {
return allOf(isClickable(), isDisplayed());
}
@Override
public String getDescription() {
return "CallOnClick";
}
@Override
public void perform(UiController uiController, View view) {
view.callOnClick();
}
}
解决方案3:如果不对该视图使用双击,则在本例中可能有用。
发布于 2017-03-22 17:58:31
另一个额外的解决方法是在API级别> 16上运行以下命令
adb shell settings put secure long_press_timeout 1500
https://stackoverflow.com/questions/32330671
复制相似问题