我在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"
,因此此代码应该有效吗?
答案 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)
让我们假设
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();
}