Selenium es la herramienta más usada para automatizar pruebas en aplicaciones web. Para interactuar con cualquier elemento — un botón, un campo de texto, un enlace — primero tienes que saber cómo encontrarlo en el DOM.
En esta guía aprenderás a seleccionar elementos web con Selenium en Java usando los 6 localizadores principales: ID, Name, XPath, CSS Selector, LinkText y ClassName. Para cada uno verás el código Java y un ejemplo real de cuándo usarlo.
Tabla comparativa de localizadores en Selenium Java
| Localizador | Sintaxis en Java | Cuándo usarlo | Velocidad |
|---|---|---|---|
| ID | By.id("valor") | Cuando el elemento tiene un ID único | Muy rápida |
| Name | By.name("valor") | Para campos de formulario con atributo name | Rápida |
| CSS Selector | By.cssSelector("selector") | Cuando necesitas seleccionar por clase o atributo | Rápida |
| XPath | By.xpath("ruta") | Para elementos sin ID ni clase, o con estructura compleja | Media |
| LinkText | By.linkText("texto") | Para seleccionar enlaces por su texto exacto | Rápida |
| ClassName | By.className("clase") | Cuando el elemento tiene una clase CSS única | Rápida |
Configurar el entorno de Selenium en Java
Antes de poder seleccionar elementos web con Selenium en Java necesitas tener el entorno configurado. Si aún no lo tienes, estos son los pasos básicos:
- Descarga Selenium Java desde el sitio oficial selenium.dev e incluye el JAR en tu proyecto.
- Configura las dependencias en Maven o Gradle. Con Maven añade esto a tu
pom.xml:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.18.1</version>
</dependency>
- Importa las clases necesarias en tu archivo Java:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;
Con esto ya puedes usar cualquiera de los 6 métodos para seleccionar elementos web con Selenium en Java que verás a continuación.

Métodos para seleccionar elementos web con Selenium en Java
1. Seleccionar elemento por ID en Selenium Java
El localizador por ID es el más rápido y fiable de todos. Úsalo siempre que el elemento tenga un atributo id único en el HTML.
HTML del elemento:
<input type="text" id="username" name="user" class="form-field">
Código Java:
WebElement campo = driver.findElement(By.id("username"));
campo.sendKeys("sara@testealo.com");
Cuándo usarlo: siempre que sea posible. Es el localizador más estable porque los IDs raramente cambian entre versiones de la aplicación.
Cuándo no usarlo: cuando el ID se genera dinámicamente, por ejemplo id="field_38472". En ese caso el test se romperá en la siguiente ejecución.
2. Seleccionar elemento por Name en Selenium Java
El localizador por Name es muy útil para campos de formulario, donde el atributo name suele ser estable y descriptivo.
HTML del elemento:
<input type="password" name="password" class="form-field">
Código Java:
WebElement contrasena = driver.findElement(By.name("password"));
contrasena.sendKeys("MiPassword123");
Cuándo usarlo: en campos de formulario como inputs de texto, contraseñas o selects donde el atributo name es único.
Cuándo no usarlo: cuando varios elementos comparten el mismo name, ya que findElement devolverá solo el primero.
3. Seleccionar elemento por CSS Selector en Selenium Java
El CSS Selector es el localizador más flexible después de XPath y considerablemente más rápido. Permite seleccionar elementos por clase, atributo, posición o combinación de varios criterios.
HTML del elemento:
<button class="btn btn-primary" data-action="login">Iniciar sesión</button>
Código Java:
// Por clase
WebElement boton = driver.findElement(By.cssSelector("button.btn-primary"));
// Por atributo
WebElement boton = driver.findElement(By.cssSelector("button[data-action='login']"));
Cuándo usarlo: cuando el elemento no tiene ID pero tiene una clase o atributo estable. Es la mejor alternativa al ID en la mayoría de casos.
Cuándo no usarlo: cuando necesitas navegar por la jerarquía del DOM hacia arriba (los CSS Selectors solo permiten navegar hacia abajo).
4. Seleccionar elemento por XPath en Selenium Java
XPath es el localizador más potente pero también el más lento y el más frágil si no se usa bien. Permite navegar por toda la estructura del DOM en cualquier dirección.
HTML del elemento:
<div class="login-form">
<input type="text" placeholder="Usuario">
</div>
Código Java:
// XPath absoluto (evitar, muy frágil)
WebElement campo = driver.findElement(By.xpath("/html/body/div/form/input"));
// XPath relativo (recomendado)
WebElement campo = driver.findElement(By.xpath("//input[@placeholder='Usuario']"));
// XPath con texto
WebElement boton = driver.findElement(By.xpath("//button[text()='Iniciar sesión']"));
Cuándo usarlo: cuando necesitas seleccionar un elemento basándote en el texto que contiene, o cuando necesitas navegar hacia un elemento padre desde un hijo.
Cuándo no usarlo: evita los XPath absolutos como /html/body/div[2]/form/input[1]. Se rompen con cualquier cambio en la estructura HTML de la página.
5. Seleccionar elemento por LinkText en Selenium Java
El localizador LinkText selecciona enlaces (<a>) por el texto exacto que muestran al usuario.
HTML del elemento:
<a href="/dashboard">Ir al panel de control</a>
Código Java:
// Por texto exacto
WebElement enlace = driver.findElement(By.linkText("Ir al panel de control"));
// Por texto parcial
WebElement enlace = driver.findElement(By.partialLinkText("panel de control"));
Cuándo usarlo: cuando necesitas hacer clic en un enlace y el texto es estable y único en la página.
Cuándo no usarlo: cuando el texto del enlace cambia según el idioma de la aplicación o el estado del usuario.
6. Seleccionar elemento por ClassName en Selenium Java
El localizador por ClassName selecciona elementos que tienen una clase CSS específica.
HTML del elemento:
<div class="error-message">Usuario o contraseña incorrectos</div>
Código Java:
WebElement mensaje = driver.findElement(By.className("error-message"));
System.out.println(mensaje.getText());
Cuándo usarlo: cuando el elemento tiene una clase CSS única y semánticamente descriptiva.
Cuándo no usarlo: cuando la clase es genérica como btn o container, ya que habrá múltiples elementos con esa clase en la página.
Buenas prácticas al seleccionar elementos web con Selenium en Java
Después de años automatizando pruebas con Selenium en Java, estas son las reglas más importantes para seleccionar elementos web con Selenium en Java de forma estable:
- Prioriza este orden: ID > Name > CSS Selector > XPath. Cuanto más arriba en esta lista, más estable y rápido será tu test.
- Evita los XPath absolutos. Usa siempre XPath relativos que comiencen con
//. - No uses clases de estilos para localizar. Clases como
text-red-500omt-4pueden cambiar con cualquier actualización de diseño. - Habla con el equipo de desarrollo. Si los elementos no tienen IDs estables, pide que los añadan con el atributo
data-testid. Es una práctica habitual en equipos con cultura de testing.
Conclusión
Dominar cómo seleccionar elementos web con Selenium en Java te permitirá marcar la diferencia entre tests estables y tests que se rompen con cada cambio de la interfaz. Como regla general: usa ID siempre que puedas, CSS Selector cuando necesites más flexibilidad, y XPath solo cuando no haya otra opción.
¿Necesitas datos de prueba para tus tests con Selenium? Usa nuestro generador de datos de prueba gratuito y olvídate de inventarte nombres, emails y DNIs a mano.
Mi nombre es Sara y soy Ingeníera QA. Soy una profesional con una sólida formación en Ingeniería Informática y más de 4 años de experiencia en el desarrollo de pruebas automatizadas y testing manual. Como experta en el campo del testing de software, he adquirido un profundo conocimiento de las mejores prácticas y metodologías en el área. Mi experiencia se extiende desde la planificación y diseño, hasta la implementación y ejecución de pruebas de software.