Atributo de checkbox de selenium “verificado”

Estoy usando Selenium en Java para probar la comprobación de una checkbox en una aplicación web. Aquí está el código:

private boolean isChecked; private WebElement e; 

Declaro e y lo asigno al área donde está la checkbox.

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

Lo extraño es que getAttribute("checked") devuelve null y, por lo tanto, una NullPointerException

En el HTML para la checkbox, no se muestra ningún atributo checked . Sin embargo, ¿no es cierto que todos input elementos de input tienen checked = "true" por lo que este código debería funcionar?

Si está utilizando Webdriver, el elemento que está buscando está Seleccionado.

A menudo, en el procesamiento de la checkbox, no se aplica el atributo verificado a menos que se especifique.

Entonces, ¿qué buscarías en Selenium Webdriver?

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

Como no hay Selected en la API Java de WebDriver, el código anterior debería ser el siguiente:

 isChecked = e.findElement(By.tagName("input")).isSelected(); 
 if ( !driver.findElement(By.id("idOfTheElement")).isSelected() ) { driver.findElement(By.id("idOfTheElement")).click(); } 
  if(checkBox.getAttribute("checked") != null) // if Checked checkBox.click(); //to Uncheck it 

También puede agregar una statement and para asegurarse de que la verificación sea verdadera.

Lo haría con 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']")); 

Tal vez eso también ayude 😉

Para el evento en el que hay varias casillas de verificación de las cuales desea seleccionar / deseleccionar solo algunas, el siguiente trabajo con el Controlador de Chrome (de alguna manera falló para IE Driver):

NOTA: Mis casillas de verificación no tenían una ID asociada, que sería la mejor manera de identificarlas de acuerdo con la Documentación. Tenga en cuenta el ! firmar al comienzo de la statement.

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

El mecanismo del marco de selenium:

Aquí el selenium realiza una solicitud al servidor de su servidor y obtiene el primer subelemento con la entrada tagname

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

Que intentas recibir un atributo en ese elemento

 object attribute = e.getAttribute("checked") 

Entonces cualquiera de los dos usa

 findElement(By.attribute("checked") 

o usar

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

PD: No estoy familiarizado con el equivalente de java de selenium api por lo que algunos métodos pueden llamarse ligeramente diferentes.

  1. Declara una variable
  2. Almacene la propiedad marcada para el botón de opción.
  3. Tener una condición if.

Asummos

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

Espero que esta respuesta sea de ayuda para ti. Avísame si tienes alguna aclaración en el controlador web de CSharp Selenium.

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