首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android执行longClick而不是单击

Android执行longClick而不是单击
EN

Stack Overflow用户
提问于 2015-09-01 11:40:05
回答 5查看 6.1K关注 0票数 13
代码语言:javascript
运行
复制
onData(anything()).inAdapterView(withId(R.id.ScheduleOrderListViewListView))
                .atPosition(0).perform(click());

50%的时间是长距离的--有一个好的解决办法吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-02-07 13:27:48

这是通过RPC将tap事件从测试代码传递到测试中的Android应用程序的一个不幸的副作用。在浓缩咖啡源代码中可以找到为什么有时执行长单击的最佳描述。

这个问题不大可能在短期内得到解决。避免这个问题的最佳选择是在更高规格的设备上运行您的测试。这是因为问题发生的可能性取决于系统负载。

票数 11
EN

Stack Overflow用户

发布于 2016-05-09 16:13:46

再加上查尔斯的话,我在这里找到了三个解决办法:https://github.com/misyobun/android-test-kit/issues/45

的解决方法1:(也许是最好的)是传递回滚操作,以防单击变成长时间的单击。如果发生这种情况,长时间的点击将被“取消”,浓缩咖啡将再次尝试点击。

代码语言:javascript
运行
复制
/**
   * 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:不是“浓缩咖啡方式”,但它可能适合某些场景:

代码语言:javascript
运行
复制
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:如果不对该视图使用双击,则在本例中可能有用。

票数 8
EN

Stack Overflow用户

发布于 2017-03-22 17:58:31

另一个额外的解决方法是在API级别> 16上运行以下命令

代码语言:javascript
运行
复制
adb shell settings put secure long_press_timeout 1500
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32330671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档