Trabajar con formularios web en Selenium implica dominar elementos como radio buttons y checkboxes; ya que son habituales en flujos de registro, encuestas o configuraciones de usuario.
En esta guía aprenderás a seleccionarlos correctamente, validar su estado y solucionar errores típicos como NoSuchElementException.
Diferencias entre Radio Button y Checkbox
Antes de ver el código, es clave entender la lógica de cada control:
- Radio Button: permite seleccionar solo una opción entre varias disponibles (selección exclusiva).
- Checkbox: permite activar o desactivar varias opciones a la vez (selección múltiple).
- Ambos se manipulan en Selenium con
click()y su estado se comprueba conisSelected().
¿Cómo seleccionar Radio Buttons en Selenium?
Paso a paso
- Abrir el navegador con
ChromeDriver. - Navegar a la URL de prueba.
- Localizar los radio buttons por su atributo
id. - Usar
click()para cambiar la selección. - (Opcional) Imprimir en consola qué opción ha sido seleccionada.
Ejemplo de código en Java
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class Form {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://cibered.com/test/radio.html");
WebElement radio1 = driver.findElement(By.id("vfb-7-1"));
WebElement radio2 = driver.findElement(By.id("vfb-7-2"));
// Radio Button1 es seleccionado
radio1.click();
System.out.println("Radio Button Option 1 Selected");
// Radio Button1 se deselecciona y se selecciona Radio Button2
radio2.click();
System.out.println("Radio Button Option 2 Selected");
}
}
En este ejemplo, primero se selecciona la opción 1 y después la opción 2, dejando desmarcada la anterior, que es el comportamiento estándar de los radio buttons.
¿Cómo seleccionar Checkboxes en Selenium?
Los checkboxes también se controlan con click(), pero a diferencia de los radio buttons, se pueden activar y desactivar tantas veces como sea necesario
1. Checkbox en página de ejemplo
En la misma página radio.html hay un checkbox que se puede localizar por id y alte
// Selección de CheckBox
WebElement option1 = driver.findElement(By.id("vfb-6-0"));
// Alternar el CheckBox
option1.click();
// Comprobar si el CheckBox está activado
if (option1.isSelected()) {
System.out.println("Checkbox is Toggled On");
} else {
System.out.println("Checkbox is Toggled Off");
}
El método isSelected() devuelve true si el checkbox está marcado y false si está desmarcado, lo que resulta muy útil para asserts en pruebas automatizadas.
2. Checkbox “Keep me logged in” de Facebook (ejemplo de bucle)
Otro ejemplo típico es el checkbox de “Keep me logged in” en una página de inicio de sesión ficticia de Facebook usada para pruebas en https://cibered.com/test/facebook.html.
driver.get("https://cibered.com/test/facebook.html");
WebElement chkFBPersist = driver.findElement(By.id("persist_box"));
for (int i = 0; i < 2; i++) {
chkFBPersist.click();
System.out.println("Facebook Persists Checkbox Status is - " + chkFBPersist.isSelected());
}
En este caso se hace clic dos veces seguidas y se imprime el estado tras cada pulsación, comprobando cómo el checkbox pasa de activado a desactivado.
Código completo de ejemplo
Aquí tienes todo el flujo integrado en una sola clase Java para poder copiar, pegar y ejecutar:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class Form {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://cibered.com/test/radio.html");
WebElement radio1 = driver.findElement(By.id("vfb-7-1"));
WebElement radio2 = driver.findElement(By.id("vfb-7-2"));
radio1.click();
System.out.println("Radio Button Option 1 Selected");
radio2.click();
System.out.println("Radio Button Option 2 Selected");
WebElement option1 = driver.findElement(By.id("vfb-6-0"));
option1.click();
if (option1.isSelected()) {
System.out.println("Checkbox is Toggled On");
} else {
System.out.println("Checkbox is Toggled Off");
}
driver.get("https://cibered.com/test/facebook.html");
WebElement chkFBPersist = driver.findElement(By.id("persist_box"));
for (int i = 0; i < 2; i++) {
chkFBPersist.click();
System.out.println("Facebook Persists Checkbox Status is - " + chkFBPersist.isSelected());
}
// driver.close();
}
}
¿Cómo solucionar NoSuchElementException con Radio Buttons y Checkboxes?
Uno de los problemas más comunes al trabajar con formularios es NoSuchElementException, que indica que Selenium no pudo encontrar el elemento en el momento de la búsqueda. bugbug
Principales causas y soluciones:
Localizador incorrecto o desactualizado
- Revisar
id,name,xpathocssSelectorcon las herramientas del navegador (Inspect / DevTools). - Si el atributo es dinámico, optar por localizadores más robustos (XPaths relativos,
contains, CSS parciales). bugbug
- Revisar
Problemas de sincronización (la página aún no ha cargado del todo)
- Usar esperas implícitas o, mejor, esperas explícitas con
WebDriverWaity condiciones comovisibilityOfElementLocatedoelementToBeClickableantes de llamar afindElement(). dev
- Usar esperas implícitas o, mejor, esperas explícitas con
Elementos dentro de iframes o no visibles
- Cambiar al
framecorrecto antes de buscar el elemento. - Asegurarse de que el elemento no está oculto por CSS o por otro overlay de la página. bugbug
- Cambiar al
Aplicar estas buenas prácticas reduce drásticamente los errores al automatizar radio buttons y checkboxes, y hace que tus tests sean más estables y mantenibles.
Conclusión
- Usa
click()para seleccionar o alternar radio buttons y checkboxes. - Usa
isSelected()para verificar si un elemento está marcado, ideal para asserts en pruebas. - Recurre a páginas de prueba como
radio.htmlyfacebook.htmlpara practicar con ejemplos reales. - Si aparece
NoSuchElementException, revisa localizadores, tiempos de carga y posibles iframes, y añade esperas explícitas.
Con esta estructura tienes un artículo técnico, orientado a keywords como “Selenium checkbox isSelected”, “Selenium radio button click example” y “NoSuchElementException Selenium solución”, listo para posicionar y atraer tráfico cualificado de QA engineers y desarrolladores de automatización.
