在空手道中对包含重复元素的表执行通配符操作?

问题描述

我遇到了在断言用户输入后需要单击图标的情况。如果有一些唯一标识符,事情很简单,就像使用:rightOf('{}UniqueIdentifier').find('i').click() 达到了目的。 也适用于:scroll('{}UniqueIdentifier').parent.children[4].click()

但如果表格包含重复值,则无法找到唯一可搜索和单击的内容。对于哪个想法是匹配整个行文本,其中最后一个元素是需要单击的图标或任何其他适合此的方法

表格看起来像这样:-

enter image description here

需要点击三点图标 - A2、P2、2,已解决。如何使用通配符定位器实现这一点?我尝试创建一个元素列表并将其与用户输入列表匹配,但失败了。

任何帮助将不胜感激。谢谢!

解决方法

首先,您应该熟悉 locateAll()。它将返回一个 Element 对象数组。之后有很多可能的方法来循环并找到你想要的东西。

另请注意,有一个“locateAll() with filter”:https://github.com/intuit/karate/tree/master/karate-core#locateall-with-filter

由于您没有提供任何 HTML,我将不得不猜测。请注意,下面的 x 是一个 Element,您甚至可以在其上调用 locate()

* def filter = function(x){ x.text.contains('Unique Identifier') }
* def list = locateAll('.grand-parent-class',filter)
* list[0].parent.children[4].click()