1

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

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

4

2 回答 2

2

不知道我之前在做什么或上面提出的解决方案有什么问题,但两者都没有工作。我尝试了不同的东西,下面是工作解决方案。id='first'是放置所有复选框的 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();
    }
于 2012-10-17T10:09:59.150 回答
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')]
于 2012-10-16T14:11:57.683 回答