🎁 Regístrate ahora y obtén hasta 30 minutos gratis de uso de IA en línea. Sin tarjeta de crédito.

Preguntas y respuestas de entrevista sobre Selenium: 24 preguntas sobre esperas, localizadores y frameworks

September 2, 2026
Preguntas de entrevista sobre Selenium con respuestas sobre localizadores, esperas, pruebas inestables, objetos de página, diseño de frameworks, ejecuciones paralelas y fallos de CI.
Preguntas y respuestas de entrevista sobre Selenium: 24 preguntas sobre esperas, localizadores y frameworks
preguntas de entrevista sobre selenium
preguntas y respuestas de entrevista sobre selenium
entrevista sobre esperas en selenium
preguntas de entrevista sobre frameworks de selenium

Las entrevistas de Selenium evalúan dos cosas: si puedes escribir pruebas de UI estables (esperas, localizadores, page objects) y si puedes diseñar un framework con el que un equipo pueda convivir (estructura, datos, reportes, ejecución en CI). Las pruebas inestables (flaky) son el tema que más sale, porque cualquiera que haya usado Selenium ha luchado contra ellas.

A continuación tienes 24 preguntas con respuestas. Los ejemplos usan sintaxis de Java y Python cuando el código ayuda, y las ideas aplican en cualquier lenguaje.

Conceptos básicos

1. ¿Qué es Selenium y cuáles son sus componentes?

Selenium es una suite de código abierto para automatizar navegadores web. Selenium WebDriver controla los navegadores a través de sus drivers y es la parte a la que la mayoría se refiere. Selenium Grid ejecuta pruebas en paralelo en muchas máquinas y navegadores. Selenium IDE es una extensión de grabación y reproducción. Selenium no maneja aplicaciones de escritorio ni reportes de pruebas integrados, así que lo combinas con un framework de pruebas.

2. ¿Cómo funciona WebDriver?

Tu prueba envía comandos mediante el protocolo W3C WebDriver por HTTP a un driver del navegador como ChromeDriver o GeckoDriver, que controla el navegador y devuelve resultados. Las versiones recientes de Selenium incluyen Selenium Manager, que encuentra y descarga el driver correcto.

3. ¿Qué localizadores soporta Selenium y cuáles prefieres?

ID, name, class name, tag name, link text, partial link text, selector CSS y XPath. Prefiere un ID estable o un atributo dedicado para pruebas como data-testid, y luego CSS. Usa XPath cuando necesites subir en el árbol o coincidir con texto. Evita rutas largas basadas en posición como /html/body/div[3]/div[2], que se rompen cuando cambia el diseño.

4. ¿Cuál es la diferencia entre findElement y findElements?

findElement devuelve la primera coincidencia y lanza NoSuchElementException si no hay ninguna. findElements devuelve una lista, que queda vacía si no hay coincidencias, así que es útil para verificar que algo no está presente.

5. ¿Cuál es la diferencia entre driver.close() y driver.quit()?

close() cierra la ventana actual. quit() cierra todas las ventanas y termina la sesión. Usa quit() en el teardown para que no queden procesos del navegador abiertos.

Esperas y pruebas inestables

6. ¿Cuáles son los tipos de esperas?

EsperaCómo funciona
ImplícitaUn tiempo de espera global para encontrar elementos
ExplícitaEspera una condición específica en un elemento específico
FluentUna espera explícita con intervalo de sondeo personalizado y excepciones ignoradas
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement button = wait.until(ExpectedConditions.elementToBeClickable(By.id("submit")));

Prefiere las esperas explícitas. Mezclar esperas implícitas y explícitas puede provocar retrasos impredecibles.

7. ¿Por qué no deberías usar Thread.sleep?

Siempre espera el tiempo completo, lo que ralentiza la suite, y aun así puede quedarse corto en un día lento. Una espera basada en condiciones continúa en cuanto se cumple la condición y falla con un mensaje claro en caso contrario.

8. ¿Qué causa las pruebas inestables y cómo las solucionas?

Causas comunes y soluciones:

  • Tiempos: usa esperas explícitas para la condición exacta, no sleeps.
  • Datos compartidos o sobrantes: crea datos de prueba por prueba y límpialos.
  • Dependencia entre pruebas: haz que cada prueba sea independiente y ejecutable por sí sola.
  • Localizadores inestables: agrega test IDs y evita rutas basadas en posición.
  • Animaciones y superposiciones: espera a que desaparezca la superposición o desactiva las animaciones en el entorno de pruebas.
  • Problemas de entorno: estabiliza el entorno de pruebas y revisa las llamadas de red y a terceros.
  • Interferencia en paralelo: aísla el estado por hilo.

Pon en cuarentena una prueba inestable para que no bloquee a todos, y luego arréglala bien. No te limites a agregar reintentos por todos lados, porque eso oculta bugs reales.

9. ¿Qué es StaleElementReferenceException?

El elemento que encontraste ya no está adjunto a la página, normalmente porque la página se volvió a renderizar. Soluciónalo localizando el elemento de nuevo justo antes de usarlo, o esperando el nuevo elemento, en lugar de mantener referencias durante mucho tiempo.

10. ¿Cómo manejas elementos que no son clicables (ElementClickInterceptedException)?

Algo cubre el elemento, como un banner o una superposición de carga. Espera a que desaparezca la superposición, desplaza el elemento a la vista o cierra el banner. Usar un clic con JavaScript debería ser el último recurso, porque un usuario real no podría hacer clic y la prueba ocultaría un bug real.

Manejo de las funcionalidades de la página

11. ¿Cómo manejas los menús desplegables, las alertas, los frames y las ventanas?

  • Menús desplegables: la clase Select para los elementos select estándar, y pasos basados en clics para los menús desplegables personalizados.
  • Alertas: driver.switchTo().alert() para aceptar, descartar o leer.
  • Frames: switchTo().frame(...) y de vuelta a defaultContent().
  • Ventanas y pestañas: obtén los identificadores de ventana, cambia a la nueva y vuelve a la anterior.

12. ¿Cómo manejas la carga y la descarga de archivos?

Para las cargas, envía la ruta del archivo al elemento input type="file" con sendKeys. Para las descargas, configura el directorio de descargas del navegador en las opciones y espera a que aparezca el archivo, luego revisa su nombre y su contenido.

13. ¿Cómo ejecutas JavaScript en Selenium?

A través de JavascriptExecutor.executeScript, por ejemplo para hacer scroll o leer un valor al que la API no llega. Úsalo con moderación.

14. ¿Qué es el modo headless?

El navegador se ejecuta sin una ventana visible, lo que es más rápido y funciona en servidores y en CI. Verifícalo con una ejecución visible cuando depures, y revisa el tamaño del viewport, porque los diseños pueden variar.

Diseño del framework

15. ¿Qué es el Page Object Model?

Cada página o componente es una clase que contiene sus localizadores y las acciones sobre ella. Las pruebas llaman a métodos como loginPage.loginAs(user) y no tocan los localizadores directamente. Cuando la interfaz cambia, arreglas una sola clase en lugar de muchas pruebas.

class LoginPage:
    def __init__(self, driver):
        self.driver = driver
    def login_as(self, user, password):
        self.driver.find_element(By.ID, "user").send_keys(user)
        self.driver.find_element(By.ID, "pass").send_keys(password)
        self.driver.find_element(By.ID, "submit").click()

16. ¿Qué contiene un buen framework de pruebas?

Un ejecutor de pruebas (TestNG, JUnit, pytest), page objects, una fábrica de drivers para distintos navegadores, configuración por entorno, gestión de datos de prueba, ayudantes para las esperas, reportes, logging, capturas de pantalla cuando falla y integración con CI.

17. ¿Cómo gestionas los datos de prueba?

Crea los datos que una prueba necesita a través de una API o de una configuración de base de datos al inicio, no a través de la interfaz, y elimínalos después. Mantén los datos en archivos o builders, no codificados directamente en las pruebas, y evita las pruebas que dependen de datos que dejó otra prueba.

18. ¿Cómo ejecutas pruebas en paralelo?

Usa la función de paralelismo del ejecutor, dale a cada hilo su propio driver (por ejemplo con ThreadLocal), mantén las pruebas independientes y ejecútalas en Selenium Grid o en un servicio de navegadores en la nube para escalar entre navegadores.

19. ¿Qué es Selenium Grid?

Un sistema con un hub y nodos (o una configuración distribuida en Grid 4) que ejecuta pruebas en distintos navegadores y sistemas operativos en paralelo. Reduce el tiempo total de ejecución y te permite cubrir más navegadores.

Estrategia y escenarios

20. ¿Qué deberías automatizar con Selenium y qué no?

Automatiza flujos estables, de alto valor y repetibles, como el inicio de sesión, el pago y las rutas críticas de regresión. No automatices comprobaciones puntuales, interfaces que cambian con frecuencia ni cosas que se prueban mejor en niveles inferiores. Una suite saludable tiene muchas pruebas unitarias y de API, menos pruebas de interfaz y un conjunto pequeño de flujos de extremo a extremo.

21. ¿Cómo pruebas una aplicación que tiene captcha o inicio de sesión con doble factor?

No intentes vencerlos en la prueba. Usa un entorno de pruebas donde estén desactivados, una cuenta de prueba con un código fijo o una bandera de omisión, o una API de prueba para crear una sesión.

22. Una prueba pasa en local pero falla en CI. ¿Qué revisas?

Las versiones del navegador y del driver, el tamaño de pantalla y las diferencias del modo headless, los tiempos en máquinas más lentas, los datos del entorno, el acceso a la red, las zonas horarias y el idioma, y las ejecuciones en paralelo que comparten datos. Captura pantallas, el código fuente de la página y los logs cuando falle para comparar.

23. ¿Cómo decides entre Selenium, Playwright y Cypress?

Selenium admite muchos lenguajes y navegadores y tiene un ecosistema enorme. Playwright y Cypress ofrecen esperas integradas, una configuración más sencilla y buenas herramientas de depuración, y pueden encajar mejor en proyectos nuevos. La elección correcta depende del lenguaje, las necesidades de navegadores y las habilidades del equipo. Da tus razones, no una preferencia de marca.

24. Explícame cómo automatizarías un flujo de pago.

"Crearía un usuario y un producto a través de la API, y luego iniciaría sesión a través de la interfaz o reutilizaría una sesión. Un page object para cada paso: búsqueda, producto, carrito y pago. Usaría un método de pago de prueba, esperaría al elemento de confirmación, verificaría el pedido a través de la interfaz y de la API, y tomaría una captura de pantalla si falla. La prueba limpiaría su pedido, se ejecutaría en paralelo y correría en el pipeline en cada merge."

Cómo prepararte

Escribe una suite pequeña para un sitio de demostración con page objects, esperas explícitas, capturas de pantalla cuando falle y una ejecución en CI. Practica explicar cómo arreglaste una prueba inestable, con la causa y el cambio. Prepárate para escribir un localizador y una espera en vivo. Consulta nuestra guía del asistente para entrevistas de programación para rutinas de práctica y la guía para entrevistas de comportamiento para la ronda de habilidades blandas.

Di tus respuestas en voz alta y lee una transcripción para detectar partes vagas como "solo agrega una espera". Sigue las reglas del empleador sobre herramientas de IA en cualquier entrevista en vivo.

Practica respuestas de entrevista sobre Selenium con YesToTheOffer

Realiza una entrevista técnica simulada, explica tu framework en voz alta y revisa tu transcripción después. 30 minutos gratis, sin suscripción.

iOS & Android — Próximamente
Ver precios