Cómo seleccionar Radio Buttons y Checkboxes en Selenium WebDriver (con ejemplos en Java)

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 con isSelected().

¿Cómo seleccionar Radio Buttons en Selenium?

Paso a paso

  1. Abrir el navegador con ChromeDriver.
  2. Navegar a la URL de prueba.
  3. Localizar los radio buttons por su atributo id.
  4. Usar click() para cambiar la selección.
  5. (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, xpath o cssSelector con las herramientas del navegador (Inspect / DevTools).
    • Si el atributo es dinámico, optar por localizadores más robustos (XPaths relativos, contains, CSS parciales). bugbug
  • Problemas de sincronización (la página aún no ha cargado del todo)

    • Usar esperas implícitas o, mejor, esperas explícitas con WebDriverWait y condiciones como visibilityOfElementLocated o elementToBeClickable antes de llamar a findElement(). dev
  • Elementos dentro de iframes o no visibles

    • Cambiar al frame correcto antes de buscar el elemento.
    • Asegurarse de que el elemento no está oculto por CSS o por otro overlay de la página. bugbug

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.html y facebook.html para 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.

Vistas: 0