复选框的isSelected()方法始终返回false

时间:2014-08-20 03:30:48

标签: html checkbox selenium-webdriver

有一个复选框已经显示为已选中,现在当我检查时,它显示为HTML中的图像src。。当我点击复选框时,它将被取消选中或选中。

为了验证它的状态,我编写了这段代码,即使选中了复选框,也总是会出错。

WebElement chBox = driver.findElement(By.xpath
     ("/html/body/div[3]/div[2]/form/fieldset/div[1]/table/tbody/tr[10]/td/img"));

        if (chBox.isSelected()) {
            System.out.println("User active check box is already checked");
        } else
            System.out.println("User active check box is not checked");
        }

为什么?

8 个答案:

答案 0 :(得分:4)

WebElement chBox = driver.findElement(By.id("chkIsActive"));

if (chBox.isSelected())
{
   System.out.println("User active check box is already checked");
} 

else
{
   System.out.println("User active check box is not checked");
}

希望这有帮助!

答案 1 :(得分:3)

检查/取消选中复选框,检查类属性是否已更改。如果是,则选择状态存储为类

的一部分
    String Class=chk.getAttribute("class");

    if(Class.contains("class name when it is checked"))
     {
        System.out.println("Status: "+chk.getAttribute("checked"));
        //This will return Null, since it is not a real check box(type=checkbox), 
        //so there is no checked attribute in it
     }
    else
     {

        System.out.println("Not Checked");
     }

isSelected()方法不会处理这种类型的复选框,这就是为什么它始终返回false或未选中(从您的角度来看) 请参阅:here

答案 2 :(得分:1)

using (ExcelPackage excelPackage = new ExcelPackage(fi))      
{
    ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets[sheetName];
    ExcelCellAddress startCell = worksheet.Dimension.Start;
    ExcelCellAddress endCell = worksheet.Dimension.End;
    if (endCell.Row > 0)
    {
        for (int col = startCell.Column; col <= endCell.Column; col++)
        {
            dt.Columns.Add(Convert.ToString(worksheet.Cells[startCell.Row, col].Value));
        }

        for (int row = startCell.Row + 1; row <= endCell.Row; row++)
        {
            DataRow dr = dt.NewRow();
            int x = 0;
            for (int col = startCell.Column; col <= endCell.Column; col++)enter code here
            {
                dr[x++] = worksheet.Cells[row, col].Value;
            }

            dt.Rows.Add(dr);
        }
    }
}

答案 3 :(得分:1)

我发现,如果您的复选框包含tagname='input'type='checkbox',那么只有isSelected()会返回布尔值。

否则,我们必须寻找另一个属性,该属性在选中和取消选中时会更改。

答案 4 :(得分:0)

您的findElement()调用丢失。点击以选中复选框或收音机

WebElement we  = findElement(By.xpath("some path));
we.click();
we.isSelected() => true

答案 5 :(得分:0)

如果其他所有方法均失败,请尝试使用isDisplayed()

driver.findElement(By.xpath(xpath).isDisplayed()

答案 6 :(得分:0)

在我看来,isSelected()仅在默认选择时才返回true。当我们选择一个元素并尝试检查它是否被选中时,它可能不起作用。 如果我弄错了,请纠正我。 安奇

答案 7 :(得分:0)

问题可能出在您正在编写的xcode上。检查是否只能为

之类的复选框获得更独特的xcode

“ / html / body / div [3] / div [2] / form / fieldset / div [1] / table / tbody / tr [10] / td / img [@ type ='checkbox']” < / p>

复选框xtype大多应以type = checkbox结尾,以便isSelected可以正常工作