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
相关产品推荐
相关产品推荐

