如果没有“已选中”属性,如何检查复选框的状态?

时间:2016-08-17 12:10:38

标签: javascript jquery selenium checkbox selenium-webdriver

我正在尝试使用Selenium Webdriver或Javascript来检查复选框的状态,但是我做了很多研究后仍然无法做到。

我的问题是:复选框没有“已检查”attrubute:

<input type="checkbox" name="site[new_sign_up]" id="site_new_sign_up" value="1">

对于常规正常复选框,我使用下一个字符串来检测是否选中了复选框:

if (checkbox.GetAttribute("checked") != null && checkbox.GetAttribute("checked").Equals("true"))

我知道可以用JS完成:

$get("isAgeSelected").checked == true

但我仍然不能这样做,因为我的复选框没有“已检查”属性。

如果使用selenium我检查元素的“Selected”属性,它也不会告诉我复选框状态的真实性。

有关如何操作的建议吗?提前致谢。

4 个答案:

答案 0 :(得分:3)

DOM API为所有输入类型提供了一个checked属性,无论它们是否具有checked属性(或者即使它们不可检查,即文本元素)

不应该依赖于存在的已检查属性来确定是否选中了复选框。

var x = document.createElement('input');
console.log(x.checked); //false
x.type = 'checkbox';
console.log(x.checked); //false
x.checked = true;
console.log(x.checked); //true
console.log(x); //<input type="checkbox"> - see? no checked attribute, yet it is still checked

答案 1 :(得分:0)

我们可以使用以下代码

在js中实现
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#site_new_sign_up').click(function(){
    if($('#site_new_sign_up').prop('checked')) {
         console.log('Checked');
    } else {
        console.log('Not Checked');
    }
 })
});
</script>

<body>
  <input type="checkbox" name="site[new_sign_up]" id="site_new_sign_up" value="1">
 </body>
</html>

答案 2 :(得分:0)

您可以使用此代码选中并取消选中该复选框。

  

if(checkBox1.getAttribute(&#34; checked&#34;)!= null)// if Checked

     

checkBox1.click(); //取消选中

答案 3 :(得分:-1)

在jquery中,您应该使用.prop而不是属性

$('input').prop('checked') //true-false meaning the checkbox is checked or not