我想检查/取消选中页面中的所有复选框。 代码段如下: -
@Test
public void checkBoxAll() {
List<WebElement> checkBoxList=driver.findElements(By.cssSelector("input [type='checkbox']"));
for(WebElement checkBox:checkBoxList)
{
checkBox.click();
}
List<WebElement> unCheckedBoxList=driver.findElements(By.cssSelector("input:not(:checked)[type='checkbox']"));
if(!CollectionUtils.isEmpty(unCheckedBoxList))
Assert.fail();
}
首先,我使用(“input [type ='checkbox']”)查找所有复选框。然后在循环中单击它们,然后找到所有选中的复选框(对于测试用例)成功执行应该没有)。 我尝试了谷歌的一些方法,但不适合我。请告诉我,我做错了什么是新手
答案 0 :(得分:1)
解决方案是:
// Find all checked checkboxes with xpath
List<WebElement> checkBoxList=driver.findElements(By.xpath("//input[@type='checkbox' and @checked='checked']"));
for(WebElement checkBox:checkBoxList)
{
checkBox.click();
}
// Assert if any checkbox left checked
List<WebElement> allCheckedBoxList=driver.findElements(By.xpath("//input[@type='checkbox' and @checked='checked']"));
if(!allCheckedBoxList.isEmpty()) {
Assert.fail();
}
<强>更新强> 如果您需要查找未选中的复选框,请使用以下xpath:
//input[@type='checkbox' and not(@checked='checked')]
答案 1 :(得分:1)
不知道我之前做的事情或上面提出的解决方案有什么问题,但两者都没有用。我尝试了不同的东西,下面是工作解决方案。 id ='第一个' 是div的id,在其下面放置所有复选框。
@Test
public void CheckBoxAll() {
String cssSelectorForNotCheck=("[id='first'] input[type='checkbox']:not(:checked)");
List<WebElement> checkBoxList=driver.findElements(By.cssSelector(cssSelectorForNotCheck));
for(WebElement checkBox:checkBoxList)
{
checkBox.click();
}
checkBoxList=driver.findElements(By.cssSelector(cssSelectorForNotCheck));
if(!checkBoxList.isEmpty()) {
Assert.fail();
}