You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Espresso的perform(click())在API 35模拟器上无法触发点击,但手动点击正常的问题求助

Espresso的perform(click())在API 35模拟器上无法触发点击,但手动点击正常的问题求助

嘿,这个问题我之前帮同事踩过类似的坑,给你几个实用的排查和解决方向:

  • 先排查点击位置是否命中有效区域
    API 35对部分富文本控件的布局测量逻辑有微调,Espresso默认是点击视图中心,但如果你的富文本里只有某段文字是可点击的(比如嵌入的链接),可能视图中心刚好不在可点击范围内。你可以试试指定精确的点击位置,比如针对链接区域的坐标点击:

    onView(withText("目标链接文本")).perform(clickAtPosition(5, 5));
    

    或者用GeneralLocation来指定点击的相对位置,比如链接的左上角偏移一点:

    onView(withText("目标链接文本")).perform(click(GeneralLocation.TOP_LEFT, new OffsetPosition(0.1f, 0.1f)));
    
  • 检查Espresso版本是否适配API 35
    如果你的Espresso依赖还是比较旧的版本,很可能对Android 14(API 35)的控件行为适配不足。建议把espresso-core、espresso-contrib这些依赖升级到最新稳定版,确保和系统的交互逻辑对齐。

  • 验证控件的可点击状态与识别逻辑
    API 35对可访问性的处理有更新,有些富文本控件在自动化测试中被识别的方式可能变了。你可以先加个断言确认控件确实被标记为可点击:

    onView(withText("目标链接文本")).check(matches(isClickable()));
    

    要是文本匹配有问题,也可以试试用内容描述或者控件的accessibilityId来定位,避免富文本的文本匹配误差。

  • 模拟完整的手动点击事件序列
    有时候Espresso封装的click()方法发送的事件序列和手动点击有差异,API 35可能对事件的完整性要求更高。你可以试试手动发送触摸的down和up事件:

    onView(withText("目标链接文本")).perform(
        MotionEvents.sendDown(10, 10),
        MotionEvents.sendUp(10, 10)
    );
    

我同事当时就是因为API 35下富文本的可点击区域被计算得比视觉范围小,Espresso默认点中心没命中,换了指定位置点击就解决了。你可以先从第一个方向试试,应该大概率能解决。


内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 10:59:36