Selenium Java中isSelected()校验未勾选复选框仍通过问题
问题根因
你的代码存在两个核心问题,导致复选框状态校验完全失效:
- 只调用了状态判断方法,没有加任何断言逻辑
isSelected()本身只是一个返回布尔值的普通方法,不会自动触发测试框架的失败判定。你写的两行代码只要能成功定位到元素,就不会抛出任何异常,不管复选框实际是勾选还是未勾选,代码都会直接执行完,测试自然会误判通过。 - 自带的
isSelected()方法无法正确识别这个Polaris自定义复选框的真实状态
Selenium原生isSelected()判断复选框状态的逻辑,是检测原生input元素的checkedDOM属性是否为true。但你页面上用的是Shopify Polaris封装的自定义复选框组件,这类组件为了实现自定义样式和无障碍适配,真实选中状态是通过aria-checked属性维护的——从你贴的元素代码就能看到,未勾选状态下元素只有aria-checked="false"标记,根本没有给原生input设置checked属性,这种情况下isSelected()的返回值完全不代表组件的真实状态。
正确校验方式
直接读取元素的aria-checked属性值判断状态,同时加上明确的断言即可:
WebElement sellWithoutStock = driver.findElement(By.name("allowOutOfStockPurchases")); // 获取真实选中状态 String actualCheckState = sellWithoutStock.getAttribute("aria-checked"); // 按测试场景做断言,比如校验未勾选状态: Assert.assertEquals(actualCheckState, "false"); // 校验勾选状态时,把预期值改为"true"就行
内容的提问来源于stack exchange,提问作者Mihai Nicorec
相关产品推荐
相关产品推荐

