2016-08-17 2 views
1

Я пытаюсь проверить состояние флажка с помощью Selenium Webdriver или Javascript, но, проведя много исследований, я все еще не могу этого сделать.Как проверить состояние флажка, если у него нет атрибута «checked»?

Моя проблема: флажок не имеет «проверено» 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 

Но все же я не могу этого сделать, поскольку мой флажок не имеет свойства «checked».

Если вы используете селен, я проверяю свойство «Selected» элемента, это также не говорит мне правду о состоянии флажка.

Любые предложения о том, как это сделать? Заранее спасибо.

+0

Вы используете jQuery? – Chax

+0

Я думаю, вам просто нужно проверить 'checkbox.GetAttribute (« checked »)! = Null' ничего больше – Satpal

+1

просто используйте' checkbox.checked' его родной JS и не зависит от проверенного атрибута – chiliNUT

ответ

3

DOM-API предоставляет проверяемое свойство всех типов ввода, независимо от того, если они есть извлеченная атрибут или нет (или даже если они не проверяют, в состоянии, то есть текстовые элементы)

Вы НЕ СЛЕДУЕТ полагаются на проверенный атрибут, присутствующий, чтобы определить, установлен ли флажок.

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 
+0

Спасибо большое! Это хорошо работает. Кажется, это лучший ответ) –

+0

@Adman, разве вы не знаете, как с этим бороться, если мне нужно использовать элемент IWebDriver для этого? Поэтому я не знаю его CssSelector, и поэтому я не могу использовать метод getElementById для JS. –

+1

@Adam, он не полагается на атрибут 'checked'. Метод 'checkbox.GetAttribute (" checked ")' возвращает свойство 'checked', если оно присутствует, и атрибут if not. –

-1

В JQuery вы должны использовать .prop вместо атрибута

$('input').prop('checked') //true-false meaning the checkbox is checked or not 
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> 
0

вы можете проверить и снимите флажок с помощью этого код.

если (checkBox1.getAttribute ("проверено")! = NULL) // если Checked

checkBox1.click(); // Снять отметку

Смежные вопросы