在Karate UI测试中如何验证复选框已被选中?
Karate UI测试中验证复选框已选中的正确方法
你的代码存在两个核心问题:
- 使用
scriptAll会返回元素数组,直接和true匹配逻辑错误,单个元素验证应该用script; - 定位的
span是复选框的样式元素,PrimeNG的p-checkbox实际的选中状态由内部的input元素控制,定位span无法正确判断选中状态。
以下是几种可行的验证方式:
方式一:通过input元素的isSelected()验证
直接定位复选框对应的input元素,调用isSelected()获取选中状态:
* def isChecked = script('return await driver.findElement(By.xpath("//div[5]/div/p-checkbox/div/input")).isSelected()') * match isChecked == true
方式二:使用Karate内置locate语法简化代码
Karate的locate方法可以直接操作元素,写法更简洁:
* match locate('//div[5]/div/p-checkbox/div/input').isSelected() == true
方式三:通过样式类验证(针对自定义样式复选框)
如果你的复选框是自定义样式,确实需要通过span元素判断,可以检查其class是否包含选中标识类(比如PrimeNG选中时span会有p-checkbox-check类):
* match locate('//div[5]/div/p-checkbox/div/div[2]/span').attr('class') contains 'p-checkbox-check'
内容的提问来源于stack exchange,提问作者nursel keskin
相关产品推荐
相关产品推荐

