Karate UI:能否查找#fieldIsReadonly并校验其父div含form-group类
在Karate中验证元素父级容器类属性的实现方法
完全可以实现,需要注意的是:#fieldIsReadonly的直接父级是带有col-md-9 field-properties类的div,你要检查的form-group类属于它的祖父级div。以下是几种可行的实现方式:
方法一:逐级遍历父节点
先定位目标复选框元素,再通过parent()方法向上遍历DOM层级,找到祖父级容器后验证其类属性:
* def checkbox = locate('#fieldIsReadonly') * def formGroupDiv = checkbox.parent().parent() * match formGroupDiv.attr('class') contains 'form-group'
方法二:用CSS选择器直接验证层级关系
可以通过组合CSS选择器,直接确认目标元素是否在带有form-group类的div内部:
// 若能定位到元素,说明层级符合要求 * locate('div.form-group #fieldIsReadonly') // 或主动验证祖先容器是否包含目标元素 * match locate('div.form-group').has('#fieldIsReadonly') == true
方法三:用closest()方法高效查找祖先元素
closest()方法会从当前元素开始向上查找第一个匹配选择器的祖先节点,用这个方法更简洁:
* match locate('#fieldIsReadonly').closest('div.form-group').exists() == true
注意事项:
parent()每次仅向上移动一级DOM节点,因此需要调用两次才能到达form-group所在容器。attr('class')用于获取元素的class属性,结合contains断言可验证目标类是否存在。closest()方法比多次调用parent()更高效,尤其当DOM层级较深时。
内容的提问来源于stack exchange,提问作者Andrei Vartic
相关产品推荐
相关产品推荐

