Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Selenium es un proyecto paraguas de código abierto que permite la automatización de los navegadores web. El componente central del proyecto Selenium es Selenium WebDriver, una biblioteca para controlar los navegadores (por ejemplo, Chrome, Firefox, Edge, Safari u Opera) mediante programación. Selenium WebDriver proporciona una Interfaz de Programación de Aplicaciones (API) entre navegadores en varios lenguajes de programación (oficialmente se admite en Java, JavaScript, Python, C# o Ruby).

Aunque podemos utilizar Selenium WebDriver para múltiples propósitos relacionados con la automatización del navegador, su uso principal es implementar pruebas de extremo a extremo para la verificación de aplicaciones web. En la actualidad, miles de organizaciones y probadores utilizan Selenium en todo el mundo, y es una de las principales soluciones para pruebas de extremo a extremo, que da soporte a una industria multimillonaria.

Quién debería leer este libro

Este libro proporciona un resumen exhaustivo de las principales características de la versión 4 de Selenium WebDriver, utilizando Java como lenguaje vinculante. Repasa los principales aspectos de la navegación web automatizada, la manipulación del navegador, la interacción con elementos web, la suplantación de identidad de usuarios, la gestión automatizada de controladores, el patrón de diseño Page Object Model (POM), el uso de infraestructuras remotas y en la nube, la integración con Docker y herramientas de terceros, y mucho más.

El público principal de este libro incluye a programadores de Java de distintos niveles (de principiante a avanzado), como desarrolladores, probadores, ingenieros de control de calidad, etc. Por lo tanto, necesitas un conocimiento básico del lenguaje Java y de la programación orientada a objetos . El objetivo final es conocer a fondo los principales aspectos de Selenium WebDriver para crear pruebas de extremo a extremo en Java utilizando diferentes marcos de pruebas de tu elección (por ejemplo, JUnit o TestNG).

Por qué escribí este libro

La automatización de pruebas es una técnica de pruebas de software que aprovecha las herramientas de automatización para controlar la ejecución de las pruebas. Permite aumentar la eficiencia y la eficacia, al tiempo que garantiza la calidad general de un sistema de software. En este ámbito, Selenium WebDriver es la biblioteca estándar de facto para desarrollar pruebas de extremo a extremo para aplicaciones web. Este libro ofrece la primera revisión completa de Selenium 4 hasta la fecha.

El libro sigue un enfoque de "aprender haciendo". Para ello, repasamos las principales características de Selenium WebDriver mediante ejemplos de pruebas listos para ejecutar. Estos ejemplos están disponibles públicamente en un repositorio de código abierto de GitHub(https://github.com/bonigarcia/selenium-webdriver-java). En aras de la exhaustividad, este repositorio contiene cada ejemplo de prueba en diferentes sabores del marco de pruebas de incrustación: JUnit 4, JUnit 5 (solo o con Selenium-Jupiter), y TestNG.

Navegar por este libro

El contenido de este libro se divide en 3 partes y 10 capítulos:

Parte I, Introducción

La Parte I proporciona información tecnológica sobre Selenium, la automatización de pruebas y la configuración del proyecto. Esta parte, más teórica que práctica, se compone de dos capítulos:

  • El capítulo 1, "Introducción a Selenium", presenta los componentes básicos del proyecto Selenium (WebDriver, Grid e IDE) y su ecosistema (es decir, las herramientas y tecnologías en torno a Selenium). Además, este capítulo repasa los principios de las pruebas de extremo a extremo relacionados con Selenium.

  • El capítulo 2, "Preparación para las pruebas", explica cómo configurar un proyecto Java (Maven y Gradle) que contenga pruebas de extremo a extremo que utilicen la API Selenium WebDriver. A continuación, aprenderás a desarrollar tus primeras pruebas WebDriver utilizando distintos marcos de pruebas: JUnit 4, JUnit 5 (solo o junto con Selenium-Jupiter), y TestNG.

Parte II, La API de Selenium WebDriver

La Parte II proporciona una visión práctica de la API de Selenium WebDriver. Esta parte se guía por las pruebas disponibles en el repositorio de ejemplos e incluye los siguientes capítulos:

  • El capítulo 3, "Fundamentos de WebDriver", describe los aspectos principales de la API de Selenium WebDriver para llevar a cabo una interacción automatizada con aplicaciones web. Así, este capítulo repasa varias estrategias para localizar y esperar elementos web. Además, descubrirás cómo suplantar acciones de usuario (es decir, interacciones automatizadas mediante el teclado y el ratón) en un navegador.

  • El capítulo 4, "Características agnósticas al navegador", revisa aquellos aspectos de la API de Selenium WebDriver que son interoperables en distintos navegadores. Así, este capítulo muestra cómo ejecutar JavaScript, crear escuchadores de eventos, gestionar ventanas, hacer capturas de pantalla, manejar el DOM sombra, manipular cookies, acceder al historial del navegador o al almacenamiento web, o interactuar con ventanas, pestañas e iframes, entre otros elementos.

  • El Capítulo 5, "Manipulación específica del navegador", explica aquellos aspectos de la API de Selenium WebDriver particulares de navegadores específicos. Este grupo de funciones abarca las capacidades del navegador (opciones, argumentos, preferencias, etc.), el Protocolo Chrome DevTools (CDP), las funciones de geolocalización, la autenticación básica y web, la impresión de páginas en PDF o la API BiDi de WebDriver.

  • El capítulo 6, "WebDriver remoto", describe cómo utilizar la API de Selenium WebDriver para controlar navegadores remotos. A continuación, aprenderás a configurar y utilizar la versión 4 de Selenium Grid. Por último, descubrirás cómo utilizar infraestructura avanzada para pruebas Selenium en proveedores en la nube (por ejemplo, Sauce Labs, BrowserStack o CrossBrowserTesting, entre otros) y navegadores en contenedores Docker.

Parte III, Conceptos avanzados

La Parte III se centra en aprovechar la API de Selenium WebDriver en distintos ámbitos y casos de uso. Esta parte incluye los siguientes capítulos:

  • El capítulo 7, "El modelo de objetos de página (POM)", presenta el POM, un patrón de diseño muy popular que se utiliza junto con Selenium WebDriver. Este patrón permite a los usuarios modelar páginas web utilizando clases orientadas a objetos para facilitar el mantenimiento de las pruebas y reducir la duplicación de código.

  • El capítulo 8, "Específicos del marco depruebas", revisa varias características particulares del marco de pruebas unitarias utilizado junto con Selenium WebDriver que permiten mejorar distintos aspectos del proceso general de pruebas. Para ello, este capítulo explica primero cómo realizar pruebas entre navegadores (es decir, reutilizar la misma lógica de prueba para verificar aplicaciones web utilizando distintos navegadores) utilizando pruebas parametrizadas y plantillas de prueba. A continuación, aprenderás a dividir las pruebas en distintas categorías para filtrar la ejecución, ordenar las pruebas, analizar los fallos (es decir, recopilar y analizar datos para determinar la causa de un fallo), reintentar las pruebas, ejecutar las pruebas en paralelo, escuchar las pruebas o desactivarlas.

  • El capítulo 9, "Integraciones de terceros", repasa distintas tecnologías que puedes utilizar para mejorar tus pruebas de Selenium WebDriver, como herramientas de generación de informes, generación de datos de prueba y otros marcos de trabajo (por ejemplo, Cucumber o Spring). Además, este capítulo describe cómo utilizar bibliotecas externas con Selenium para implementar casos de uso específicos, como la descarga de archivos o pruebas no funcionales (como de carga, seguridad o accesibilidad).

  • El capítulo 10, "Más allá de Selenium", presenta un par de marcos de automatización relacionados con Selenium: Appium (para pruebas móviles) y REST Assured (para probar servicios web REST). Para terminar, repasamos algunas de las alternativas actuales más relevantes a Selenium WebDriver, como Cypress, WebDriverIO, TestCafe, Puppeteer o Playwright.

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

Constant width bold

Muestra comandos u otro texto que el usuario debe escribir literalmente.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

Utilizar ejemplos de código

Los ejemplos de código están disponibles para su descarga en https://github.com/bonigarcia/selenium-webdriver-java. Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.

Agradecemos, pero generalmente no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Hands-On Selenium WebDriver with Java por Boni García (O'Reilly). Copyright 2022 Boni García, 978-1-098-11000-0".

Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación, conocimientos y perspectivas sobre tecnología y negocios para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita https://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Norte
  • Sebastopol, CA 95472
  • 800-998-9938 (en Estados Unidos o Canadá)
  • 707-829-0515 (internacional o local)
  • 707-829-0104 (fax)

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/handsOn_SeleniumWDJ.

Envía un correo electrónico para comentar o hacer preguntas técnicas sobre este libro.

Para obtener noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.

Encuéntranos en Facebook: https://facebook.com/oreilly.

Síguenos en Twitter: https://twitter.com/oreillymedia.

Míranos en YouTube: https://www.youtube.com/oreillymedia.

Agradecimientos

En primer lugar, quiero dar las gracias al equipo de O'Reilly por hacer realidad este libro. Su apoyo editorial ha sido ejemplar en cada etapa de este viaje.

También quiero expresar mi reconocimiento a los revisores técnicos que han colaborado en la elaboración de este libro. Sus valiosos comentarios y su asesoramiento experto mejoraron notablemente su calidad: Diego Molina (ingeniero de software en Sauce Labs y director técnico del proyecto Selenium), Filippo Ricca (profesor asociado de informática en la Università di Genova), Andrea Stocco (investigador postdoctoral en el Software Institute de la Università della Svizzera italiana), Ivan Krutov (desarrollador de software en Aerokube) y Daniel Hinojosa (consultor independiente, programador, instructor, conferenciante y autor). Muchas gracias.

Por último, me gustaría agradecer la contribución de Simon Stewart (creador de WebDriver y jefe del proyecto Selenium hasta 2021). Muchas gracias, Simon, por escribir el prólogo de este libro y por tus inestimables comentarios sobre su contenido. Pero, sobre todo, quiero reconocer tu labor durante todos estos años al frente del proyecto Selenium. Tus contribuciones a la comunidad de pruebas de automatización ya forman parte de la historia del software.

Get Selenium WebDriver práctico con Java now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.