如何使用webdriver检查页面上的所有复选框?

时间:2012-10-16 11:01:11

标签: css-selectors webdriver selenium-webdriver

我想检查/取消选中页面中的所有复选框。 代码段如下: -

@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']”)查找所有复选框。然后在循环中单击它们,然后找到所有选中的复选框(对于测试用例)成功执行应该没有)。      我尝试了谷歌的一些方法,但不适合我。请告诉我,我做错了什么是新手

2 个答案:

答案 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();
    }