🧉 BasePage: Creando la configuración e instanciación del WebDriver

🧉 BasePage: Creando la configuración e instanciación del WebDriver

En esta clase estamos haciendo una de las partes fundamentales de nuestro framework y, también, de las más complejas. Atentos a los comentarios que agregué al código y a la clase!

Archivos en los que trabajamos:

A FreeRangeNavegacion.feature, de momento, le vamos a dejar solo un paso, el Given.

Feature: Navigation bar
    To see the subpages
    Without logging in
    I can click the navigation bar links

Scenario: I can access the subpages through the navigation bar
    Given I navigate to www.freerangetesters.com

Ahora, en la BasePage.java es donde va a ocurrir la magia:

package pages;

// Importaciones necesarias
import java.time.Duration;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;

import io.github.bonigarcia.wdm.WebDriverManager;

public class BasePage {
    /*
     * Declaración de una variable estática 'driver' de tipo WebDriver
     * Esta variable va a ser compartida por todas las instancias de BasePage y sus subclases
     */
    protected static WebDriver driver;
    /*
     * Declaración de una variable de instancia 'wait' de tipo WebDriverWait.
     * Se inicializa inmediatamente con una instancia dew WebDriverWait utilizando el 'driver' estático
     * WebDriverWait se usa para poner esperas explícitas en los elementos web
     */
    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));

    /* 
     * Configura el WebDriver para Chrome usando WebDriverManager.
     * WebDriverManager va a estar descargando y configurando automáticamente el driver del navegador
    */
    static {
        WebDriverManager.chromedriver().setup();

        //Inicializa la variable estática 'driver' con una instancia de ChromeDriver
        driver = new ChromeDriver();
    }

    /*
     * Este es el constructor de BasePage que acepta un objeto WebDriver como argumento.
     */
    public BasePage(WebDriver driver) {
        BasePage.driver = driver;
    }

    //Método estático para navegar a una URL.
    public static void navigateTo(String url) {
        driver.get(url);
    }

}

Selenium y Cucumber con Java

Comprar ahoraSaber más

Introducción

  • 🧐 ¿Qué vamos a ver en este curso?
  • 🤔 ¿Cómo hacer preguntas?
  • 🔥 Recomendaciones para sacarle el mayor provecho al curso2
  • 💪🏻 Actividades del curso
  • 🧑🏻‍💻 ¿Qué es Selenium WebDriver?
  • 🥒 ¿Qué es Cucumber?
  • 🦾 ¿Qué es Gradle?
  • 🔥 Cuestionario Módulo 1
  • 📍 Actividad módulo 1

Instalaciones para el curso

  • 💻 Instalaciones de JDK, Gradle y extensiones6
  • ⚒️ Creando un proyecto con Java y Gradle para Testing9
  • ☕️ Instalando las primeras librerías de nuestro framework

Configuración del proyecto

  • 📚 Creación de carpetas y una decisión clave sobre la infraestructura de nuestro proyecto4
  • 🤠 Una librería que simplifica todo y nuestro primer test12
  • 🥗 Otra extensión útil de Cucumber2
  • Actividad: Compartiendo tu Setup Inicial y WebDriver Manager

Page Object Model: Teoría e implementación

  • 🧙🏻‍♂️ Page Object Model: ¿Qué es y por qué usarlo?5
  • 🔥 La otra gran decisión de diseño de nuestro Framework: Screenplay vs POM
  • 🔍 Cuestionario Módulo POM
  • ✋🏻 Actividad: Implementando el Page Object Model (POM)

Introducción a Cucumber: Instalación e implementación

  • 📍 Creando nuestro primer Feature y ejecutándolo1
  • 🧉 BasePage: Creando la configuración e instanciación del WebDriver
  • 🔌 Conectando Feature, Step Def y Page Object Class5
  • 🔍 Cuestionario módulo Cucumber
  • 🥒 Actividad: Instalación e Implementación de Cucumber

Localización de Elementos Web con XPath y CSS

  • 👨🏻‍🎓 Locators y consejos
  • 📝 Cheatsheet para construir buenos locators con XPath y CSS
  • 🧑🏻‍💻 Actividad: Dominando Locators con XPath y CSS

Selenium WebDriver: La librería para interactuar con elementos de una página web.

  • 🏃🏽‍♂️‍➡️ La BasePage: La columna vertebral de nuestro framework.
  • 🧹 Limpiando el browser después de ejecutar pruebas
  • 💬 Llenando campos de texto: La función sendKeys() de Selenium
  • 🧠 Dropdowns con Selenium: El objeto Select
  • 👩🏻‍💻 Navegando a todos los links con un solo locator3
  • 🪲 Creando un nuevo scenario y Page Object Classes2
  • 🦀 Scenario 2 El usuario puede elegir un plan al suscribirse
  • 🤖 Cuestionario módulo Selenium
  • ☕️ Actividad: Interactuando con Elementos Usando Selenium WebDriver

Assertions: Validando comportamiento esperado

  • ✓ Nuestra primera validación: Todos los elementos de un dropdown2
  • 🔍 Tipos de Assertions con TestNG
  • 🤖 Las Soft Assertions: Una parte muy conveniente de la librería TestNG
  • 🦸🏻‍♂️ Cuestionario módulo Assertions
  • 👾 Actividad: Validación de Comportamiento Usando Assertions

Cucumber avanzado: Tags, parámetros y mejores prácticas

  • 😱 Tags en Cucumber3
  • 🧛🏻‍♀️ Backgrounds en Cucumber
  • 😇 Expresiones para mejorar nuestros Feature Files
  • ✋🏻 Expresiones regulares parte 2
  • 💪🏻 Actividad: Organizando Escenarios con Tags en Cucumber

Generación de Reportes con Cucumber

  • 🧑🏼‍🔬 Reportes en Cucumber4
  • 📸 Como agregar screenshots de la falla a nuestro reporte
  • 💻 Cuestionario para el módulo de Cucumber avanzado
  • 🤩 Actividad: Generación de Reportes con Cucumber

Ejercicios aplicando lo aprendido

  • 🦸🏻‍♂️ Entrevista Automation: ¿Cómo resolvemos un ejercicio REAL de Selenium Webdriver?1
  • 🧞 Exámen técnico de Automation con Selenium, Java y Cucumber resuelto y explicado.3
  • Actividad Final: Reflexiona y Comparte Tu Aprendizaje en Testing Automatizado

Dejá tu testimonio inmortalizado en la web

  • 🙏🏻 Testimonio