Selenium复选框属性"已选中"

jam*_*ang 66 java checkbox selenium attributes nullpointerexception

我在Java中使用Selenium来测试webapp中复选框的检查.这是代码:

private boolean isChecked;
private WebElement e;
Run Code Online (Sandbox Code Playgroud)

我声明e并将其分配给复选框所在的区域.

isChecked = e.findElement(By.tagName("input")).getAttribute("checked").equals("true");
Run Code Online (Sandbox Code Playgroud)

什么是奇怪的是getAttribute("checked")返回null,因此aNullPointerException

在复选框的HTML中,没有checked显示任何属性.但是,是不是所有input元素都有,checked = "true"所以这个代码应该工作?

CBR*_*cer 116

如果您使用的是Webdriver,那么您要查找的项目将被选中.

除非指定,否则通常在复选框的渲染中实际上不会应用已检查的属性.

所以你在Selenium Webdriver中寻找的是这个

isChecked = e.findElement(By.tagName("input")).Selected;
Run Code Online (Sandbox Code Playgroud)

由于WebDriver Java API中没有Selected,上面的代码应如下所示:

isChecked = e.findElement(By.tagName("input")).isSelected();
Run Code Online (Sandbox Code Playgroud)


Shu*_*oul 14

if ( !driver.findElement(By.id("idOfTheElement")).isSelected() )
{
     driver.findElement(By.id("idOfTheElement")).click();
}
Run Code Online (Sandbox Code Playgroud)


小智 8

 if(checkBox.getAttribute("checked") != null) // if Checked 
    checkBox.click();                         //to Uncheck it 
Run Code Online (Sandbox Code Playgroud)

您还可以添加and语句以确保选中是否为true.


Tar*_*ken 6

我会用cssSelector做到这一点:

// for all checked checkboxes
driver.findElements(By.cssSelector("input:checked[type='checkbox']"));
// for all notchecked checkboxes
driver.findElements(By.cssSelector("input:not(:checked)[type='checkbox']"));
Run Code Online (Sandbox Code Playgroud)

也许这也有帮助;-)