我的应用程序中有一个项目列表,例如:
我希望能够对一组匹配的项目执行操作(删除)(例如,如果文本是“项目 2”)。当列表很长时,某些项目可能在屏幕上不可见。
我可以看到有一个
index
用于在匹配项中进行选择,我还可以看到有一个 containsDescendants
选择器(我认为它可能与父视图匹配,不一定与列表匹配?)但我不清楚是否可以使用这些的某种组合来迭代零个或多个匹配项。
目标是说:“当屏幕中存在包含此文本的元素(可能在视线之外)时,请向下滚动直至其可见并执行删除操作”。
理想情况下我想:
- runFlow:
when:
containsDescendants: Item 2 # Keep looping while the list contains any matching items
commands:
- scrollUntilVisible:
element: Item 2 # Scroll down to the item
- LongPressOn: Item 2
- tapOn: Delete
我发现这行不通。我想知道这是否可能,如果可以,语法是什么?
我会检查repeat命令。我认为这会让你接近你想要的;虽然我不确定如果元素不在屏幕上它是否会起作用;为此,您可能需要使用:
scrollUntilVisible
;你不能真正滚动直到一个可能不存在的目标,如果不存在它就会失败,我不认为。您可能需要使用坐标和多次滑动,具体取决于列表的长度。 (不过,就我个人而言,我会尝试设置您的测试数据,使列表的长度保持不变,并且如果需要,只需在多个测试中测试多个长度;而不是尝试编写一个测试来解释列表可能是任意长度。)我想你最终的结果可能是这样的:
- repeat:
while:
visible: "Item 2"
commands:
- longPressOn: "Item 2"
- tapOn: Delete
- swipe:
direction: DOWN
- runFlow:
when:
visible: "Item 2"
commands:
- longPressOn: "Item 2"
- tapOn: Delete