Reto explicit waits

Código
Avanzado
Selenium
Curso de Selenium
20 min
200 XP
Actualizado: 25/09/2025

¡Programa y certifícate!

Asistente de IA
Solución de código
Certificado
Empezar ejercicio

Ejercicio de programación: Reto explicit waits

Este ejercicio de programación está diseñado para poner a prueba tus conocimientos en Selenium. Es un ejercicio avanzado que pondrá a prueba tus conocimientos expertos.

Tipo: Ejercicio de código 20 minutos estimados 200 puntos de experiencia

Información adicional del ejercicio

Aprende a gestionar las esperas en Selenium para evitar fallos por UI que todavía no se ha renderizado.

Contenido del ejercicio

Objetivo

Dominar las esperas explícitas utilizando WebDriverWait y ExpectedConditions para manejar contenido dinámico y sincronización en aplicaciones web.

Escenario

Automatiza las esperas en una página de procesamiento de pedidos que simula contenido dinámico mediante el siguiente HTML:

<!DOCTYPE html>
<html>
<head>
    <title>Procesamiento de Pedido - Waits Challenge</title>
    <script>
        function startProcessing() {
            // Simular carga de contenido dinámico
            setTimeout(() => {
                document.getElementById('status').textContent = 'Procesando...';
                document.getElementById('progress').style.display = 'block';
            }, 2000);
            
            setTimeout(() => {
                document.getElementById('status').textContent = 'Completado';
                document.getElementById('complete-btn').disabled = false;
                document.getElementById('result-message').style.display = 'block';
            }, 5000);
        }
    </script>
</head>
<body onload="startProcessing()">
    <div id="order-container">
        <h1>Procesamiento de Pedido #12345</h1>
        
        <div id="status">Iniciando...</div>
        
        <div id="progress" style="display: none;">
            <span>Progreso en curso...</span>
        </div>
        
        <div id="result-message" style="display: none;" class="success-msg">
            Pedido procesado exitosamente
        </div>
        
        <button id="complete-btn" disabled>
            Finalizar Pedido
        </button>
        
        <input type="hidden" id="order-data" value="processed">
    </div>
</body>
</html>

Tareas a realizar

Usa WebDriverWait y ExpectedConditions para:

  1. Elemento visible - Espera a que el div de progreso (#progress) sea visible
  2. Cambio de texto - Espera a que el status cambie a "Completado"
  3. Elemento clickeable - Espera a que el botón se habilite y sea clickeable
  4. Elemento presente - Verifica que el input hidden esté presente en el DOM

Requisitos técnicos

  • Usa driver.get("data:text/html;charset=utf-8," + java.net.URLEncoder.encode(htmlContent, "UTF-8"));
  • Todas las esperas deben usar WebDriverWait con Duration.ofSeconds()
  • Incluye 3 asserts que verifiquen las condiciones esperadas
  • Bonus: Crea una condición personalizada usando Function<WebDriver, Boolean>

Criterios de evaluación

  • visibilityOfElementLocated() para elementos dinámicos
  • textToBePresentInElement() para cambios de contenido
  • elementToBeClickable() para interacciones habilitadas
  • presenceOfElementLocated() para elementos en DOM
  • ✅ Manejo adecuado de timeouts

¡Recuerda cerrar el driver con **driver.quit()** al final!

Lección relacionada

Este ejercicio está relacionado con la lección "Explicit Wait" de Selenium. Te recomendamos revisar la lección antes de comenzar.

Ver lección relacionada

Más ejercicios de Selenium

Explora más ejercicios de programación en Selenium para mejorar tus habilidades y obtener tu certificación.

Ver más ejercicios de Selenium

Solución al ejercicio de programación en Selenium

Contenido bloqueado

¡Desbloquea la solución completa!

Completa el ejercicio de programación en Selenium para acceder a la solución paso a paso, explicaciones detalladas y mejores prácticas.

solution.js
JavaScript
1 function solveChallenge ( input ) {
2 // Algoritmo optimizado O(n log n)
3 const data = parseInput ( input );
4 const sorted = data . sort (( a , b ) => a - b );
5
6 // Aplicar técnica de dos punteros
7 let left = 0 , right = sorted . length - 1 ;
8 const result = [];
9
10 while ( left < right ) {
11 const sum = sorted [ left ] + sorted [ right ];
12 if ( sum === target ) {
13 result . push ([ sorted [ left ], sorted [ right ]]);
14 left ++; right --;
15 } else if ( sum < target ) {
16 left ++;
17 } else {
18 right --;
19 }
20 }
21
22 return result ;
23 }
Código completo
Explicaciones
Mejores prácticas
+1.200 developers han resuelto este ejercicio de programación

Practica con ejercicios de programación en Selenium

Mejora tus habilidades con cientos de ejercicios de práctica, recibe retroalimentación instantánea y obtén tu certificación cuando estés listo.

Asistente de IA

Aprende de tus errores

Progreso

Mide tu avance

Certificación

Valida tus habilidades

Únete a miles de desarrolladores mejorando sus habilidades en Selenium

⭐⭐⭐⭐⭐
4.9/5 valoración