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

Espresso Intent匹配器不匹配:URL校验导致测试失败

问题原因及解决方案

你的问题出在hasData的精确匹配逻辑上:

  • 你用hasData(Uri.parse("http://www.ya.ru/"))要求Intent的Data必须和这个Uri完全一致,但从日志里的Intent { act=android.intent.action.VIEW dat=http://www.ya.ru/... }能看出来,实际触发的URL末尾带有省略的内容(可能是路径、参数或者斜杠后的其他字符),和你写的精确Uri不匹配,所以整个allOf条件不成立,测试失败。

要校验URL正确性,同时适配实际的URL格式,可以换成模糊匹配的方式:
用hasDataMatching配合正则表达式,匹配URL的核心前缀部分,示例代码:

intended(allOf(
    hasAction(Intent.ACTION_VIEW),
    hasDataMatching(Regex("^http://www\\.ya\\.ru(/.*)?$")),
    toPackage("com.android.chrome"),
))

这个正则会匹配所有以http://www.ya.ru开头的URL,不管后面有没有额外的路径或参数。

如果之后你能确定完整的目标URL,也可以直接把完整的Uri传入hasData,但用正则的方式更灵活,能适配URL带动态内容的场景。

内容的提问来源于stack exchange,提问作者FrBr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:57:10