Android Jetpack Compose UI测试中如何遍历元素节点列表?
Jetpack Compose测试库基础问题解决方案
1. 遍历同一TestTag的元素并逐个点击
Compose测试框架中,composeTestRule.onAllNodes(hasTestTag("item"))返回的是SemanticsNodeInteractionCollection,它提供了forEachNode方法来遍历每个节点并执行操作,直接用这个方法就能实现点击逻辑:
composeTestRule.onAllNodes(hasTestTag("item")).forEachNode { nodeInteraction -> nodeInteraction.performClick() }
如果需要先获取所有节点的语义集合再处理,也可以用fetchSemanticsNodes()拿到具体的节点列表,再通过节点匹配来执行点击:
val itemNodes = composeTestRule.onAllNodes(hasTestTag("item")).fetchSemanticsNodes() itemNodes.forEach { semanticsNode -> composeTestRule.onNode(hasSemantics(semanticsNode)).performClick() }
2. 获取元素节点列表的长度
要获取匹配TestTag的节点数量,直接调用fetchSemanticsNodes()后取size即可:
val itemCount = composeTestRule.onAllNodes(hasTestTag("item")).fetchSemanticsNodes().size // 如果是测试断言场景,也可以用断言直接验证数量 composeTestRule.onAllNodes(hasTestTag("item")).assertCountEquals(expectedCount)
内容的提问来源于stack exchange,提问作者luis
相关产品推荐
相关产品推荐

