Selenium复选框属性"已检查"

时间:2011-11-18 19:08:24

标签: java selenium attributes checkbox nullpointerexception

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

private boolean isChecked;
private WebElement e;

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

isChecked = e.findElement(By.tagName("input")).getAttribute("checked").equals("true");

奇怪的是,getAttribute("checked")返回null,因此NullPointerException

在复选框的HTML中,没有显示checked属性。但是,并非所有input元素都具有checked = "true",因此此代码应该有效吗?

8 个答案:

答案 0 :(得分:108)

如果您使用的是Webdriver,那么您要查找的项目就是选中。

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

那么你在Selenium Webdriver中寻找的是

isChecked = e.findElement(By.tagName("input")).Selected;

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

isChecked = e.findElement(By.tagName("input")).isSelected();

答案 1 :(得分:11)

if ( !driver.findElement(By.id("idOfTheElement")).isSelected() )
{
     driver.findElement(By.id("idOfTheElement")).click();
}

答案 2 :(得分:6)

 if(checkBox.getAttribute("checked") != null) // if Checked 
    checkBox.click();                         //to Uncheck it 

您还可以添加and语句,以确保选中是否为真。

答案 3 :(得分:5)

我会用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']"));

也许这也有帮助; - )

答案 4 :(得分:1)

对于有多个复选框的事件,您只想选择/取消选择少数复选框,以下使用Chrome驱动程序(IE驱动程序失败):

注意:我的复选框没有与之关联的ID,这是根据文档识别它们的最佳方式。请注意语句开头的!符号。

if(!driver.findElement(By.xpath("//input[@type='checkbox' and @name='<name>']")).isSelected()) 
{
  driver.findElement(By.xpath("//input[@type='checkbox' and @name= '<name>']")).click();
}

答案 5 :(得分:0)

硒框架的机制:

这里selenium向其服务器发出请求并获取带有标记名输入的第一个子元素

WebElement e = e.findElement(By.tagName("input"));

比尝试接收该元素的属性

object attribute = e.getAttribute("checked")

所以要么使用

findElement(By.attribute("checked")

或使用

findElement(By.xpath("\\input[@checked='true']")

P.S。我不熟悉java等同于selenium api,因此某些方法可能会略有不同。

答案 6 :(得分:0)

  1. 声明变量。
  2. 存储单选按钮的已检查属性。
  3. 有if条件。
  4. 让我们假设

    private string isChecked; 
    private webElement e; 
    isChecked =e.findElement(By.tagName("input")).getAttribute("checked");
    if(isChecked=="true")
    {
    
    }
    else 
    {
    
    }
    

    希望这个答案对您有所帮助。如果在CSharp Selenium网络驱动程序中有任何澄清,请告诉我。

答案 7 :(得分:0)

public boolean getcheckboxvalue(String element)
    {   
        WebElement webElement=driver.findElement(By.xpath(element));
        return webElement.isSelected();
    }