Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Automatización Sin Esfuerzo: Selenium con Python Paso a Paso
Rating: 4.5 out of 5(9 ratings)
28 students

Automatización Sin Esfuerzo: Selenium con Python Paso a Paso

Fundamentos bien explicados de Selenium WebDriver con Python, Automatización de pruebas en navegador
Last updated 1/2024
Spanish
Spanish [Auto],

What you'll learn

  • Entender los fundamentos de la automatización web: Aprenderán los conceptos básicos de la automatización de pruebas y tareas en navegadores web
  • Dominar Selenium con Python: Los participantes se familiarizarán con las diversas funciones y capacidades de Selenium con Python
  • Resolver problemas reales de automatización: Demostraciones de ejercicios prácticos que imitan desafíos de automatizacion en el trabajo
  • Implementar buenas prácticas y estrategias de depuración: Aprenderas a escribir código limpio y eficiente, a implementar buenas prácticas en la automatización

Course content

1 section36 lectures2h 39m total length
  • Introducción2:41

    Este curso se concentra en como automatizar pruebas de paginas web usando Selenium. Cubre en forma extensa las diferentes formas de encontrar elementos usado el DOM y XPath. Xpath en un lenguaje muy pequeño para seleccionar nodos de un archivo XML. HTML es tratado como XML por XPath.   

    Los ejemplos de este curso fueron probados en Firefox, Chrome e Internet Explorer. Para probar se hace uso de Unittest, aunque existen otros frameworks pero no se cubren en este curso.   

    También veras las acciones más comunes y algunas no comunes en una pagina de internet, por ejemplo como darle clic a un botón o a una caja de selección, como verificar si un checkbox esta seleccionado, como seleccionar una opción en un drop down. Como obtener el texto o cualquier atributo de un elemento.   

    Un poco mas alla de lo básico veras como cambiar el foco a alguna nueva ventana que se abra, o como cambarse a una alerta. Veras como realizar acciones en cadena ActionChains son utiles para crear acciones un poco mas complejas como seleccionar un menú dinamico que aparezca cuando el raton se mueve encima de un elemento.   

    También aprenderás como manejar esperas Implicitas y Esperas Explicitas o en ingles (Implicit waits y Explicit waits)   

    El curso termina explicando lo que se conoce como Page Object Model (POM) que es un patrón de diseño. O en otras palabras es una estrategia probada para optimizar la creacion de tus pruebas, este modelo ofrece que .   

    • Tu código será más fácil de entender     

    • Sea Fácil de mantener por cualquier persona   

    • Tu Código sea reusable – porque usa el mismo script en varias pruebas   

    Porque eso entra de las estrategias que pudieras seguir para generar cientos de casos de prueba en forma eficiente.    

    Al final de este curso te sentiras con confianza para generar tus programas para probar tus  casos de prueba en una forma elegante y bien estructurada. 

  • Instalación de Python5:05


    El video comienza presentando el objetivo principal: enseñar a los espectadores cómo instalar Python para usarlo con Selenium, una herramienta poderosa para automatizar navegadores web. Primero, se introduce brevemente Python y Selenium, destacando la importancia de Python en la automatización y el desarrollo web y cómo Selenium utiliza este lenguaje para controlar las acciones del navegador de manera efectiva.

    Luego, el video procede a guiar a los espectadores a través del proceso de descarga e instalación de Python. Se muestra la página oficial de Python y se señala la versión recomendada para descargar. Mientras se descarga, el video ofrece una explicación concisa pero detallada de los componentes que se instalarán, incluyendo el intérprete de Python y pip, el gestor de paquetes.

    Una vez descargado Python, el video muestra paso a paso cómo ejecutar el instalador. Se hace especial énfasis en la importancia de marcar la opción "Add Python to PATH" para asegurar que Python se pueda ejecutar desde la línea de comandos en cualquier directorio. Durante la instalación, el narrador explica qué significa cada paso y cómo las diferentes opciones afectarán el uso de Python.

    Después de la instalación, el video demuestra cómo verificar que Python y pip estén correctamente instalados, mostrando cómo abrir la línea de comandos, escribir los comandos para verificar las versiones de Python y pip, y explicando qué deberían ver los usuarios como resultado si todo está correctamente configurado.

    A continuación, el video se mueve hacia la instalación de Selenium. Se explica qué es un WebDriver y por qué es necesario para Selenium. Luego, se muestra cómo usar pip para instalar el paquete de Selenium y se discute brevemente cómo actualizarlo en el futuro.

    Finalmente, el video concluye con un resumen de los pasos realizados y ofrece consejos sobre cómo empezar a escribir scripts de automatización con Python y Selenium. También se anima a los espectadores a explorar más sobre Python y Selenium, proporcionando enlaces a recursos adicionales y comunidades en línea donde pueden aprender más y resolver dudas.

  • Instalación de Selenium2:10

    Para instalar Selenium, escribe cmd en tu barra de busqueda para abrir una consola de comandos de DOS, tienes que ir al directorio donde instalaste Python y después ir al folder scripts.

    si no cambiaste el directorio por defecto durante la instalación, Python 3.6 se encuentra en

    C:\Users\Gabriel Serrano\AppData\Local\Programs\Python\Python36

    Puedes escribir dir y ves que ahí se encuentra pip.exe ese es el instalador de Python que sirve para instalar módulos casi en forma automática.

    Es importante decir que cuando usas pip, necesitas estar conectado a internet pues pip bajara el modulo de internet antes de instalarlo.

    Puedes ver los módulos que tienes instalados escribiendo “pip list”. Si acabas de instalar Python como yo, veras que tienes solamente dos módulos instalados: setuptools y pip.

    Para instalar selenium simplemente escribe “pip install selenium” cuando presionas enter no se tarda casi nada y te despliega un mensaje indicando que la instalación fue exitosa.

    Puedes volver a escribir el comando pip list para comprobar que selenium fue instalado. Si lo haces ves que ahora tienes pip, setuptools y selenium.

  • Instalación de driver para Firefox: geckodriver3:25


    Geckodriver
    es un componente esencial para utilizar Selenium, una herramienta de automatización de navegador web, con el navegador Mozilla Firefox. Es un enlace entre los comandos de Selenium y el navegador Firefox, actuando como un servidor intermediario que traduce los comandos escritos en un script de Selenium a un formato que Firefox puede entender y ejecutar. Aquí te explico más detalles sobre qué es y cómo funciona:

    Función de Geckodriver:

    1. Traducción de Comandos: Geckodriver toma los comandos enviados por Selenium, los traduce a un protocolo que Firefox entiende (conocido como el protocolo Marionette), y luego envía estos comandos al navegador.

    2. Interacción con Firefox: Cuando ejecutas un script de Selenium para realizar tareas automatizadas en Firefox (como abrir páginas web, hacer clic en elementos, rellenar formularios, etc.), Geckodriver facilita la comunicación entre tu script y el navegador.

    Importancia en la Automatización de Pruebas:

    • Compatibilidad: Cada navegador principal tiene su propio driver para asegurar la compatibilidad con Selenium. Chrome tiene Chromedriver, Internet Explorer tiene IEDriver, y Firefox utiliza Geckodriver.

    • Estandarización: Geckodriver implementa el protocolo WebDriver, un estándar de la industria para la automatización de navegadores web, lo que asegura que los comandos y operaciones de Selenium se realicen de manera consistente en Firefox.

    Uso en Proyectos de Selenium:

    • Instalación y Configuración: Para usar Selenium con Firefox, necesitas descargar y configurar Geckodriver en tu entorno de desarrollo. Esto implica descargar el ejecutable de Geckodriver y colocarlo en una ubicación accesible para tu script de Selenium.

    • Ejecución de Scripts: Cuando ejecutas un script de Selenium destinado a Firefox, el script inicia una instancia de Geckodriver, que a su vez abre y controla el navegador.

    Actualizaciones y Mantenimiento:

    • Desarrollo Activo: Geckodriver se actualiza regularmente para mantener la compatibilidad con las últimas versiones de Firefox y para incorporar mejoras y correcciones de errores.

    • Versiones Compatibles: Es importante asegurarse de que la versión de Geckodriver que estás utilizando sea compatible con la versión de Firefox instalada en tu sistema.

    En resumen, Geckodriver es un componente clave para la automatización de pruebas y tareas en Firefox utilizando Selenium. Proporciona una interfaz necesaria para que Selenium envíe comandos al navegador Firefox y reciba respuestas de este, permitiendo así la automatización efectiva de tareas en este navegador.

  • Presentando la página de pruebas1:52

    El sitio de internet que vamos a estar usando para todas nuestras pruebas es goodstartbooks.com/pruebas

    Esta pagina fue creada para ti, para que hagas tus pruebas, tiene varios tipos de elementos, pro ejemplo un menú con una liga a otra pagina, tiene u textbox, una tabla que tiene formateada la primera fila, después veremos como probar los colores o clases, también veremos como obtener los valores dentro de la celda. Una lista, un grupo de check boxes, veremos como seleccionarlos después en el curso.   

    Radiobutton, y grupo de radiobuttons , a la derecha tenemos un listbox para probar tambien y al final botones y un botón que despliega un mensaje   

    Al final de la pagina para probar se encuentra un FRAME que una pagina web dentro de otra pagina web.

  • Primera prueba en Firefox3:10


    El video es una guía completa y detallada diseñada para enseñar a los espectadores cómo instalar GeckoDriver, un componente crucial para utilizar Selenium con el navegador Firefox. El video está pensado tanto para principiantes en automatización como para aquellos que ya tienen experiencia pero necesitan entender cómo configurar GeckoDriver específicamente.

    Comienza con una introducción al propósito de GeckoDriver, explicando que es un enlace entre Selenium y el navegador Firefox y por qué es necesario para realizar pruebas automatizadas en este navegador. El narrador destaca la importancia de tener las herramientas adecuadas para la automatización y cómo GeckoDriver facilita la comunicación directa con Firefox.

    Luego, el video guía a los espectadores a través del proceso de descarga de GeckoDriver. Muestra dónde encontrar el sitio web oficial y cómo navegar en él para seleccionar la versión correcta del driver, adecuada para el sistema operativo del espectador, ya sea Windows, MacOS o Linux. Mientras el archivo se descarga, el narrador explica qué es un 'driver' en el contexto de la automatización de navegadores y cómo GeckoDriver se integra con Selenium y Firefox.

    Una vez descargado el archivo, el video muestra cómo extraer y almacenar el ejecutable de GeckoDriver. Se proporcionan instrucciones detalladas sobre qué directorios son los más adecuados para almacenarlo y cómo modificar las variables de entorno del sistema para incluir la ruta del ejecutable de GeckoDriver. Esto asegura que Selenium pueda localizar y utilizar GeckoDriver sin problemas.

    El video continúa con una demostración de cómo verificar que GeckoDriver está instalado y configurado correctamente. Incluye cómo abrir la línea de comandos o terminal, cómo ejecutar GeckoDriver desde cualquier directorio y cómo interpretar los mensajes que aparecen para confirmar que la instalación fue exitosa.

  • Primer programa en Chrome6:26

    El video es una guía educativa y detallada diseñada para enseñar a los espectadores cómo crear y ejecutar un programa sencillo en Python que utiliza Selenium para abrir una página web específica. Este tutorial está dirigido tanto a principiantes en programación y automatización como a aquellos con algo de experiencia que buscan comprender mejor cómo utilizar Selenium para interactuar con la web.

    El video comienza con una breve introducción sobre qué es Selenium y por qué es una herramienta poderosa y popular para la automatización de tareas en navegadores web. Explica cómo Selenium permite a los usuarios simular acciones humanas reales en un navegador, como abrir páginas web, hacer clic en enlaces y llenar formularios.

    Luego, el narrador introduce el lenguaje de programación Python y explica por qué es una excelente opción para trabajar con Selenium debido a su sintaxis clara y su amplio soporte comunitario. Se proporciona un resumen rápido de cómo configurar el entorno de desarrollo necesario para ejecutar scripts de Python, incluyendo la instalación de Python y un editor de texto o entorno de desarrollo integrado (IDE).

    El video procede a guiar a los espectadores a través del proceso de instalación de Selenium utilizando pip, el gestor de paquetes de Python. Se explica cómo escribir y ejecutar un comando simple para instalar Selenium y se verifica que la instalación se haya completado correctamente.

    A continuación, el video se sumerge en la escritura del script de Python. El narrador explica cada línea de código en detalle: desde importar las bibliotecas necesarias hasta escribir la lógica para iniciar un navegador, abrir una página y cerrar el navegador después de un breve retraso. El script es explicado de manera que incluso los espectadores sin experiencia previa en programación puedan seguirlo y entenderlo.

    Mientras el script se va construyendo, el narrador también ofrece consejos sobre cómo evitar errores comunes y cómo leer y entender los mensajes de error que pueden surgir. Se enfatiza la importancia de leer la documentación de Selenium y Python para entender mejor las funciones utilizadas.

    Una vez que el script está completo, el video muestra cómo ejecutarlo y qué esperar cuando se corre. El narrador demuestra cómo el navegador se inicia automáticamente, navega a la página web especificada y luego se cierra, todo controlado por el script.

  • Primer Programa en Edge5:12

    El video es una guía instructiva y meticulosa diseñada para mostrar a los espectadores cómo desarrollar un programa sencillo utilizando Python y Selenium para abrir una página web en el navegador Microsoft Edge. Este tutorial está dirigido a una audiencia variada, incluyendo aquellos que son nuevos en la automatización de navegadores, así como a programadores con experiencia que buscan ampliar su conocimiento en Selenium con un enfoque específico en Edge.

    El video comienza con una introducción clara y concisa sobre Selenium, destacando su papel y utilidad en la automatización de tareas en navegadores web. Se explica cómo Selenium simula interacciones humanas, permitiendo a los usuarios abrir páginas, interactuar con elementos en la web y mucho más. Luego, se enfatiza la relevancia de Microsoft Edge en el mercado actual de navegadores y por qué es importante saber cómo automatizar tareas en él.

    A continuación, el narrador introduce el entorno de programación: Python. Se explica brevemente por qué Python es una elección popular debido a su sintaxis sencilla y su poderosa capacidad para interactuar con Selenium. Se proporcionan detalles sobre cómo configurar Python y un entorno de desarrollo adecuado, junto con instrucciones para instalar Selenium utilizando pip, el gestor de paquetes de Python.

    El tutorial luego se centra en la configuración específica necesaria para utilizar Selenium con el navegador Edge. Se guía a los espectadores a través del proceso de descarga del WebDriver adecuado para Edge, explicando cómo localizar la versión correcta y dónde colocar el archivo ejecutable para que Selenium pueda interactuar con el navegador.

    El video procede con la creación del script de Python. Cada línea de código es explicada detalladamente: desde importar las bibliotecas necesarias, iniciar el WebDriver de Edge, hasta comandos para abrir una página web específica. El narrador emplea un lenguaje claro y accesible, asegurando que incluso los principiantes puedan seguir y comprender el proceso.

    A medida que el script se desarrolla, el narrador ofrece consejos útiles sobre cómo manejar posibles errores y proporciona información sobre cómo cada comando afecta la interacción del script con el navegador Edge. También se enfatiza la importancia de entender las peculiaridades de trabajar con Edge comparado con otros navegadores.

    Una vez que el script está completo, el video demuestra su ejecución. Los espectadores pueden ver en tiempo real cómo el navegador Edge se lanza automáticamente, navega a la página web designada, y luego se cierra, todo bajo el control del script de Python.

    El video concluye con un resumen de los conceptos cubiertos, reiterando la importancia de aprender a automatizar tareas en varios navegadores para ser un desarrollador de pruebas automatizadas versátil. Se alienta a los espectadores a experimentar con el código, modificarlo para abrir diferentes sitios o realizar tareas más complejas en Edge.

  • Que es el DOM (Document Object Model)7:39

    Para entender un poco que es el DOM es mas sencillo de entender si lo hacemos con un ejemplo. Puedes encontrar el archivo HTML que estoy usando en los recursos de esta lección. No importa Si abres el archivo en Chrome, Internet Explore o Firefox, si presionas F12 la consola de Javascript se abre, esta te permite ver los elementos en HTML. En este video estoy usando Chrome pero su funcionalidad es muy parecido en los otros navegadores.

    ¿Que son nodos?, nodo es un elemento en HTML, y los nodos están relacionados entre ellos. en esta pagina el encabezado (HEAD), el cuerpo (BODY) o la tabla (TABLE) son ejemplos de nodos    

    El DOM (Document Object Model) representa el código HTML que fue usado en la página de internet. El DOM representa este código con una estructura de árbol de nodos.

  • Encontrando nodos usando la consola del desarrollador2:01

    En Firefox, Internet explore o Chrome puedes llamar a la consola del desarrollador presionando F12. Después puedes seleccionar el icono del “inspector” y puedes mover tu cursor alrededor de cualquier elemento que quieras seleccionar, el navegador muestra tips acerca del elemento donde tienes el mouse sin necesidad de selecionarlo, por ejemplo si pones tu mouse encima de la tabla, muestra su Id igual a “primera” entre otra información. Si le das clic en un elemento, te mostrara en donde se encuentra en el código.   

    El inspector también trabaja cuando mueves tu raton en el código, iluminara el elemento en la pagina.   

    Una vez mostrado el código puedes hacer decisiones para elegir el método que vas a usar para localizar ese elemento en Selenium. Lo veremos un poco mas adelante, pero en este caso puedes ver que la tabla tiene el atributo ID , y ese será un buen candidato para encontrar esta tabla en selenium. 

  • Seleccionando nodos con XPath8:13

    El video es una guía detallada y educativa diseñada para enseñar a los espectadores cómo utilizar XPath en Selenium para localizar elementos en las páginas web de manera eficiente y precisa. Este tutorial está dirigido tanto a principiantes en la automatización de navegadores web como a aquellos con experiencia previa que buscan profundizar su conocimiento en el uso de XPath con Selenium.

    El video comienza con una breve introducción sobre qué es Selenium y cómo se utiliza para automatizar acciones en navegadores web. Luego, se introduce el concepto de XPath, explicando que es un lenguaje de consulta que permite navegar a través de los elementos y atributos en un documento HTML o XML. Se destaca su importancia como herramienta poderosa para localizar elementos en una página web, esencial para la automatización de pruebas y tareas en navegadores.

    A continuación, el narrador explica los fundamentos de XPath, incluyendo la sintaxis básica y los tipos de XPath: absoluto y relativo. Se utiliza un lenguaje claro y ejemplos visuales para ilustrar cómo se construyen las expresiones XPath y cómo se pueden utilizar para identificar elementos específicos dentro de la estructura de una página web.

    El video luego se sumerge en cómo usar XPath en el contexto de Selenium. Se muestra cómo instalar y configurar Selenium en el entorno de desarrollo preferido del espectador y cómo iniciar un navegador para pruebas automatizadas. Se explican las funciones de Selenium para interactuar con elementos web utilizando XPath, como find_element by.xpath y find_elements by.xpath.

    El narrador guía a los espectadores a través de ejemplos prácticos y demostraciones en tiempo real de cómo escribir y ejecutar scripts que utilizan XPath para localizar y manipular elementos. Se cubren diferentes escenarios y desafíos comunes, como elementos con atributos dinámicos, estructuras complejas y cómo manejar situaciones en las que los elementos no se encuentran fácilmente.

  • Predicados en XPath4:36

    Una vez establecido el contexto, el video se enfoca en el tema central: los predicados en XPath. Explica que los predicados se utilizan para refinar y precisar aún más las búsquedas de elementos, permitiendo a los usuarios seleccionar elementos específicos basados en condiciones y criterios detallados. Esta sección incluye una explicación de la sintaxis básica de los predicados y cómo se integran en las expresiones XPath comunes.

    El narrador guía a los espectadores a través de ejemplos claros y concisos que demuestran cómo usar predicados para localizar elementos por su texto, atributos, posición y otras características. Se utilizan situaciones prácticas y comunes en la automatización de pruebas para ilustrar cómo los predicados pueden hacer que las búsquedas de elementos sean más específicas y robustas.

    A medida que avanza el video, se proporcionan consejos útiles y mejores prácticas para escribir predicados efectivos y eficientes, así como para evitar errores comunes. Se discuten técnicas avanzadas, como el uso de funciones dentro de los predicados y cómo manejar elementos dinámicos o complejos en una página web.

    Además, el video muestra cómo integrar expresiones XPath con predicados en scripts de Selenium. Se proporciona una demostración paso a paso de cómo escribir un script de Python que utiliza Selenium junto con expresiones XPath refinadas por predicados para interactuar con una página web de ejemplo

  • Generando busquedas XPATH en tu navegador3:56

    Para hacer cualquier tipo de pruebas en un elemento, lo primero que tienes que hacer es seleccionar ese elemento, XPath (XML path language) es un lenguaje usado para seleccionar nodos de un archivo XML. HTML es considerado XML.

    XPath usa el DOM (Document Object Model) para navegar por el árbol XML y encontrar y seleccionar los nodos que se requieran usando un criterio   

    WebDriver de Selenium puede usar XPath para localizar elementos usando consultas XPath    

    Veamos un poco de la sintaxis de XPATH con unos ejemplos. Voy a usar FirePath solo para propósitos didácticos como mencione en un video anterior esta pequeña utilería Add-on de Firefox no funciona en las ultimas versiones de Firefox. Encontre que funcioana en la versión 55.0.   

    Bueno, si no tienes instalado Firepath de todos modos los conceptos son sencillos y firePath es usado solamente es para aprender ya que no es necesario para usar selenium.

  • CSS Selectors7:21


    Los selectores CSS en Selenium son una forma poderosa y eficiente de localizar elementos dentro de una página web para interactuar con ellos durante la automatización de pruebas. Estos selectores utilizan la sintaxis de los Selectores de Cascading Style Sheets (CSS) para identificar elementos basados en sus atributos, contenido y relación con otros elementos en el Document Object Model (DOM) de la página.

    ¿Qué son los Selectores CSS?

    1. Selectores de CSS: Son patrones que se utilizan para seleccionar los elementos que quieres estilizar en las hojas de estilo. En Selenium, estos mismos patrones se utilizan para identificar los elementos a los que quieres acceder y manipular con tus scripts de automatización.

    2. Sintaxis: La sintaxis de los selectores CSS es concisa y permite identificar elementos a través de diferentes atributos como id, clase, tipo, atributos específicos, y sus relaciones con otros elementos en el DOM. Por ejemplo:

      • Por ID: #id

      • Por Clase: .clase

      • Por Atributo: [atributo='valor']

      • Combinaciones y descendientes: div > .clase

    Ventajas de usar Selectores CSS en Selenium:

    1. Eficiencia: Son generalmente más rápidos que XPath y otros localizadores, especialmente en navegadores modernos.

    2. Potencia y Flexibilidad: Pueden localizar elementos por múltiples atributos y relaciones, lo que los hace muy versátiles.

    3. Legibilidad: Su sintaxis es usualmente más simple y directa que la de XPath, haciendo que los scripts sean más fáciles de leer y mantener.

    4. Compatibilidad: Son soportados por todos los navegadores modernos, lo que garantiza la coherencia en las pruebas automatizadas.

    Ejemplos de Uso en Selenium:

    Imagina que tienes un botón con el id "enviar" en tu página web. Puedes localizar este botón en Selenium con el siguiente código en Python:

    pythonCopy code

    boton_enviar = driver.find_element_by_css_selector("#enviar")


    Si quieres encontrar todos los elementos que tienen una clase específica, podrías hacer algo como esto:

    pythonCopy code

    elementos_con_clase = driver.find_elements_by_css_selector(".mi-clase")


    Consideraciones:

    • Especificidad: Los selectores CSS operan bajo un principio de especificidad; los selectores más específicos tienen prioridad sobre los menos específicos. Esto puede ser muy útil, pero también requiere una comprensión clara de cómo está estructurado el DOM de tu página.

    • Dinamismo: En páginas web dinámicas donde el DOM cambia frecuentemente, es crucial asegurarse de que tus selectores CSS sean robustos y puedan manejar estos cambios.

    En resumen, los selectores CSS en Selenium son una herramienta fundamental para cualquier persona involucrada en la automatización de pruebas de aplicaciones web. Permiten localizar y manipular elementos de la página de forma eficiente, flexible y legible, facilitando la creación de scripts de pruebas automáticas robustas y mantenibles.

  • Encontrando elementos con Python1:37

    Existen varias formas para encontrar elementos en una página usando selenium. Generalmente usas la que es adecuada a la información que conoces del elemento:   

        

    Buscar por          

    Metodo        

    ID          

    find_element by.id        

    Nombre          

    find_element by.name        

    XPath          

    find_element by.xpath        

    Texto          

    find_element by.link_text        

    Texto parcial          

    find_element by.partial_link_text        

    Tipo de elemento          

    find_element by.tag_name        

    Clase          

    find_element by.class_name        

    Css Selector          

    find_element by.css_selector        

        

    Y todos los métodos tienen un método similar para encontrar múltiples elementos, estos metodos regresan una lista.   

    ·         find_elements by.name   

    ·         find_elements by.xpath   

    ·         find_elements by.link_text   

    ·         find_elements by.partial_link_text   

    ·         find_elements by.tag_name   

    ·         find_elements by.class_name   

    ·         find_elements by.css_selector   

  • find_element By.ID4:10


    Para encontrar elementos por ID usando Selenium, puedes utilizar el método find_element by.id disponible en la instancia del WebDriver. El ID es un atributo único asignado a un elemento HTML en una página web, lo que lo hace un medio eficiente y confiable para localizar elementos.

    Aquí te muestro cómo puedes hacerlo, utilizando Python como ejemplo:

    Primero, necesitas importar Selenium y crear una instancia del WebDriver. Aquí se muestra cómo hacerlo con el navegador Chrome, pero el proceso es similar para otros navegadores:


    Buenas Prácticas y Consideraciones:

    • Elementos únicos: Asegúrate de que el ID del elemento sea único en la página para evitar confusiones.

    • Manejo de Excepciones: Si intentas encontrar un elemento que no existe o cuyo ID no es correcto, Selenium lanzará una excepción NoSuchElementException. Es una buena práctica manejar estas excepciones en tu código.

    • Espera: En páginas dinámicas, los elementos pueden no estar disponibles inmediatamente después de cargar la página. Considera usar las "esperas" (waits) de Selenium para manejar estas situaciones.

  • find_element By.NAME2:42

    Para usar find_element con el método By.NAME en Selenium, primero necesitas entender que este método localiza elementos en una página web basándose en el atributo name de los elementos HTML. El atributo name es comúnmente utilizado en formularios web, como campos de entrada de texto, botones, radio buttons, entre otros. Aquí te muestro cómo puedes hacerlo, utilizando Python como lenguaje de ejemplo:

    Paso 1: Importar Selenium y Crear una Instancia del WebDriver

    Primero, importa Selenium y crea una instancia del WebDriver. Aquí te muestro cómo hacerlo con el navegador Chrome (asegúrate de tener el Chromedriver instalado y en tu PATH):

    pythonCopy code

    from selenium import webdriver

    from selenium.webdriver.common.by import By


    # Iniciar el WebDriver para Chrome

    driver = webdriver.Chrome()


    # Navegar a la página web donde quieres encontrar el elemento

    driver.get("https://www.ejemplo.com")


    Paso 2: Usar find_element con By.NAME

    Ahora, para encontrar un elemento por su atributo name, utiliza el método find_element junto con By.NAME:

    pythonCopy code

    # Suponiendo que el elemento que quieres encontrar tiene un name "nombreElemento"

    elemento = driver.find_element(By.NAME, "nombreElemento")


    Paso 3: Interactuar con el Elemento Encontrado

    Una vez que has localizado el elemento, puedes interactuar con él dependiendo de su tipo (campo de texto, botón, etc.):

    pythonCopy code

    # Si es un campo de texto, puedes enviar texto

    elemento.send_keys("texto a escribir")


    # Si es un botón, puedes hacer clic en él

    elemento.click()


    Paso 4: Cerrar el Navegador

    No olvides cerrar el navegador al final de tu script para liberar recursos:

    pythonCopy code

    driver.quit()


    Buenas Prácticas y Consideraciones:

    • Elementos con Atributo name: Asegúrate de que el atributo name del elemento sea el correcto.

    • Manejo de Excepciones: Si intentas encontrar un elemento que no existe o cuyo name no es correcto, Selenium lanzará una excepción NoSuchElementException. Es recomendable manejar estas excepciones adecuadamente.

    • Espera Dinámica: En páginas que cargan contenido dinámicamente, considera usar las "esperas" (waits) de Selenium para asegurarte de que el elemento esté presente antes de intentar interactuar con él.

    En resumen, find_element con By.NAME en Selenium es una herramienta útil para localizar elementos en una página web basándose en su atributo name. Este método es particularmente útil para interactuar con formularios y otros controles de entrada en la automatización de pruebas web.

  • Conceptos de Unittest2:34

    (Test Case) unidad mínima en unnittest puede contener una o mas validaciones : Hereda de unittest TestCase class.

    1. (Test Fixture) Es la preparación y terminación de todas tus pruebas. Un ejemplo de preparación que es común es abrir el navegador de internet y un ejemplo de terminación de todas tus pruebas es cerrar el navegador de internet.

    2. (Test Suite) una colección o grupo de casos pruebas (Test Cases)

    3. (Test Runner) La parte de unittest que Executa las pruebas

    4. (Test Report) Reporte de los resultados de las pruebas

  • Unittest6:03

    Veamos qué fácil es convertir nuestro ejemplo del video anterior a un caso de prueba de unnittest.

  • Unittest - Mas de una prueba en un TestCase3:26

    .¿Qué pasa si quieres correr mas pruebas en el mismo caso de pruebas? A manera de ejercicio, simplemente separemos las dos validaciones para que se ejecuten como dos pruebas distintas dentro del mismo

  • Encuentra elementos por XPath y por Clase4:12

    Para encontrar elementos por XPath en Selenium, utilizas el método find_element junto con el método By.XPATH. XPath, o XML Path Language, es un lenguaje de consulta que se usa para seleccionar nodos en un documento XML. En el contexto de una página web, que es básicamente un documento HTML (una forma de XML), XPath te permite navegar por la estructura de la página y seleccionar elementos basándose en su jerarquía y atributos.

    Aquí te muestro cómo puedes hacerlo, utilizando Python como lenguaje de ejemplo:

    Paso 1: Importar Selenium y Crear una Instancia del WebDriver

    Primero, importa Selenium y crea una instancia del WebDriver. Aquí te muestro cómo hacerlo con el navegador Chrome (asegúrate de tener el Chromedriver instalado y en tu PATH):

    pythonCopy code

    from selenium import webdriver

    from selenium.webdriver.common.by import By


    # Iniciar el WebDriver para Chrome

    driver = webdriver.Chrome()


    # Navegar a la página web donde quieres encontrar el elemento

    driver.get("https://www.ejemplo.com")


    Paso 2: Usar find_element con By.XPATH

    Para encontrar un elemento por XPath, utiliza el método find_element junto con By.XPATH:

    pythonCopy code

    # Suponiendo que tienes un XPath para el elemento que quieres encontrar

    xpath_del_elemento = "/html/body/div[1]/div/div[2]/input"

    elemento = driver.find_element(By.XPATH, xpath_del_elemento)


    Puedes usar XPath de diferentes maneras, como:

    • Absoluto: Comienza desde la raíz del documento HTML (/html) y navega por toda la estructura.

    • Relativo: Comienza desde un elemento específico y es más flexible (//tagname[@attribute='value']).

    Paso 3: Interactuar con el Elemento

    Una vez que hayas localizado el elemento, puedes interactuar con él de diversas maneras:

    python code:

    # Si es un campo de texto, puedes enviarle texto

    elemento.send_keys("texto a escribir")


    # Si es un botón, puedes hacer clic en él

    elemento.click()


    Paso 4: Cerrar el Navegador

    No olvides cerrar el navegador al final de tu script para liberar recursos:

    pythonCopy code

    driver.quit()


    Buenas Prácticas y Consideraciones:

    • Especificar XPath: Asegúrate de que tu XPath sea correcto y único para el elemento que deseas encontrar.

    • Manejo de Excepciones: Selenium lanzará NoSuchElementException si el XPath no encuentra el elemento.

    • Espera Dinámica: En páginas que cargan contenido dinámicamente, usa las esperas de Selenium para asegurarte de que el elemento esté presente antes de intentar interactuar con él.

    En resumen, encontrar elementos por XPath es una técnica poderosa en Selenium para localizar elementos en una página web, especialmente cuando los métodos más simples como id o name no son aplicables o cuando necesitas localizar elementos con una estructura más compleja.

  • Encuentra elementos por Texto: find_element By.LINK_TEXT3:35

    Encuentra elementos por Texto: find_element by.link_text

  • Encuentra elementos usando find_element By.TAG_NAME y CSS Selector3:40

    Encuentra elementos por Tipo de elemento: find_element by.tag_name

  • Encontrando mas de un elemento4:48

    Todos los métodos que hemos visto hasta ahorita regresan solamente un elemento a la vez. Esos metodos tienen un metodo similar que te permite encontrar mas de un elemento a la vez, estos métodos te regresan una lista. Los nombres  de estos metodos empiezan con find elements, en plural.   

    •             find_elements by.name     

    •             find_elements by.xpath     

    •             find_elements by.link_text     

    •             find_elements by.partial_link_text     

    •             find_elements by.tag_name     

    •             find_elements by.class_name     

    •             find_elements by.css_selector     

    Y también el método general find_elements.

  • Acciones. Clic en un elemento y escribe un texto4:48

    Esta lección muestra dos conceptos importantes

    veremos como hacer clic en una liga que te lleva a una segunda pagina y en la segunda pagina encontraras un textbox, y en ese textbox escribiras algo usando el metodo send_keys()   

    Ve al website de pruebas “goodstartbooks.com/pruebas” Primero vamos a ver como encuentar la liga  usando python para que nos lleve a la segunda pagina. Presiona F12 para abrir la consola si no esta abierta.   

    Si generas Xpath usando Chrome o Firefox obtenemos una búsqueda relativa un poco larga   

    “/html/body/div/div[1]/ul/li[1]/a[1]”

  • Acciones - Clic en botones de selección y casillas de selección4:48

    selección (checkboxes),  veamos primero como hacerlo en los botones de selección (en radiobuttons)

    Primero veamos como identificar cada una de las opciones. Usando el inspector vemos que podemos encontrar usando id “RadioGroup1_0” y “RadioGroup1_1”   

    Lo que vas a hacer en este ejercicio es darle clic al primer botón, esperar tres segundos y después darle clic al segundo botón. 

  • Selecciona una opción de un drop down6:09

    La clase “select” de selenium proporciona los siguientes metodos y recuerda que estos metodos solamente funcionan en elementos “select”   

    deselect_all()          

    En   elementos de opción multiple remueve todas las selecciones        

    deselect_by_index(index)          

    Remueve la   selección basado en la posición o índice        

    deselect_by_value(value)          

    Remueve la   selección basado en valor de la selección        

    deselect_by_visible_text(text)          

    Remueve la   seleccion basado en el texto desplegado        

    select_by_index(index)          

    Selecciona   basado en la posición o índice        

    select_by_value(value)          

    Selecciona   basado en valor de la selección        

    select_by_visible_text(text)          

    Selecciona   basado en el texto desplegado        

  • Obteniendo un atributo o Texto3:52

    Muchos elementos tiene la propiedad text, una vez que seleccionas un elemento, puedes obtener el texto de ese elemento. Atributo attributo

    Veamos como funciona, usando el inspector en Chome selecciona selecciona la celda que dice “azul’ en la tabla. Mueve tu raton al código y usando el botón derecho del raton, selecciona copy y después copy Xpath para generar la búsqueda usando Xpath.   

     Pega la búsqueda generada en Notepad para analizarla   

    Vez que la fila puede ser seleccionada con id igual a noImportante  y a partir de ahí navega a la segunda celda “td”, tu cadena XPath se ve asi:   

    //*[@id='noImportante']/td[2] 

  • Cambiando el foco a una ventana6:09

    Cuando presionas el botón que dice submit en la pagina de pruebas abrirá un nueva pagina, para cambiarse a otra pagina la clase Webdriver ofrece las siguientes propiedades que accesan al navegador:

    Handle es como numero de referencia manejado por el sistema para cada ventana. Cada ventana tiene un handle, y el driver de selenium ofrece las siguientes propiedades:   

    Propiedad          

    Descripcion        

    current_url          

    URL de la pagina,        

    current_window_handle          

    Handle de la ventana actual        

    name          

    Nombre del navegador        

    orientation          

    Orientacion del dispositivo        

    page_source          

    Codigo de la pagina        

    title          

    Título de la pagina        

    window_handles          

    Los handles de todas las ventanas en la session actual        

    Y para cambiarnos a una nueva ventana, alerta o frame, la clase Webdriver ofrece los siguientes métodos   

    switch_to.window()        

    switch_to.alert()        

    switch_to.frame()        

  • Cambiando el foco a una alerta3:36

    Es posible que te encuentres en la situación de que cuando presiones un botón una alerta se muestre y tengas que presionar ok.

    En nuestra pagina de pruebas el buton que dice alert  manda un mensaje con un botón de ok. El botón de ok no se encuentra en la pagina y por eso no puede ser encontrado con los metodos de selenium que hemos visto hasta ahora.   

    En este caso, cuando la alerta aparezca debes llamar nuevamente el metodo switch_to.alert() y aceptar el mensaje. 

  • Cambiando el foco a un frame3:19

    Cuando tienes elementos dentro de un Frame, Selenium trata esos elementos como si estuvieran en otra pagina y tienes que enfocar primero el Frame y después el elemento dentro del Frame.   

    Analizemos primero lo que estamos diciendo.   

    En tu Chrome, selecciona el inspector para encontrar el campo nombre que se encuentra en la parte de abajo de la pagina. Como puedes ver en el encabezado este campo se encuentra en la pagina 2 de pruebas. Si te muees un poco hacia arriba  en el código puedes ver en que todos estos elementos se encuentran dentro de un iFrame y de hecho el iFrame contiene toda una pagina llamada nueva pagina.   

    Veamos un ejemplo para entender mejor:   

    Escribamos nuevamente “Juan” en el campo de nombre, para lograr eso, necesitaremos enfocar el framework, y después encontrar el campo nombre que tiene id “Segundo” y por ultimo, una vez encontrado teclamos la palabra Juan.   

    Pon atencion que iFrame puede ser encontrado usando el id = pruebas-iframe 

  • Acciones en cadena (ActionChains)5:59

    Acciones en cadena o ActionChains en inglés son una manera de automatizar interacciones básicas como movimientos del ratón ,  clic de los botones del ratón, o presionar una secuencia de teclas. ActionChains son utiles para crear acciones un poco mas complejas como seleccionar un menú dinamico que aparezca cuando el raton se mueve encima de un elemento.

    Cuando agregas acciones al objeto ActionChains, las acciones se guardan en memoria hasta que se ejecuta el método perform y las accones se ejecutan en el orden que fueron agregadas. Acción    

    Acciones pueden ser agregadas en cadena, una tras otra en una instruccion, por ejemplo este ejemplo sencillo donde primero se mueve el ratón hacia un doropdown, después se da click a una opción que aparece dinámicament, y por ultimo se ejecuta el metodo perform que ejecuta las dos acciones.   

    ActionChains(driver).move_to_element(dropdown).click(opcionDinamica).perform() 

  • Problema: Elementos Escondidos2:22

    Problema con elementos escondidos

    Veamos otro ejercicio que muestra un problema con implicitly wait   

    Deja mostrarte en el navegador el botón que dice “continua” cuando refrescas el navegador va a desaparecer y después de cinco segundos va a volver a aparecer, para demostrar, aprieta el botón de refrescar, y el botón desaparece, después de cinco segundos reaparece.    

    Veamos como localizar este botón. Presiona f12 y usando el inspector dale clic al botón de “continua” y observa que  el botón tiene un id igual a “proceed”, se puede usar el id para encontrar ese elemento.   

    Abre el programa del ejemplo anterior y localiza el botón usando el id igual a “proceed”, usa find_element_by_id y cambia el nombre de la variable  a botón   

    Si el botón es encontrado, borra todo lo de que se encuentra dentro de la condición if, y escibe botón.click() para darle clic al botón que acabas de encontrado.   

    Antes de correr tu programa verifica que implicit_wait de 15 segundos se encuentra en tu código.   

    Corre tu programa y guarda tus cambios,    

    Al correr tu programa ves que falla inmediatamente porque no puede encontrar el elemento,  no importa que tengas una espera implícita de 15 segundos, no espera. porque? Porque el elemento si es encontrado pero se encuentra escondido, selenium se da cuenta de que el botón esta escondido y decide que no va a poder darle clic y termina.   

    Este problema se puede resolver con una espera explicita. Primero veamos que son esperas explicitas.   

    Explicit Waits      

  • Esperas Implícitas - Implicit Waits2:48

    Qué pasa cuando un botón toma mucho tiempo para desplegarse en la página y tú lo estas tratando de probar? La prueba fallara si Selenium no encuentra ese botón a tiempo.

    Selenium ofrece dos soluciones a este problema: Espera Implícita y Espera Explícita (Implicit waits y Explicit waits)   

    Implicit Waits       

    una espera implícita es donde el Webdriver espera por un tiempo máximo determinado para encontrar un elemento cuando no está disponible. TAmbien es el tiempo de espera para que cualquier comando termine    

    Este método solamente necesita ser llamado una sola vez por sesión.   

    Esta configuración funciona de manera general cada vez que tratas de encontrar un elemento.   

    El tiempo de espera funcionara durante la sesión, o sea hasta el webdriver se cierre. 

  • Esperas Explícitas (Explicit Waits)5:28

    Explicit Waits

    En una espera explícitas el Webdriver define un tiempo de espera para que ocurra una condición especifica.    

    Cuando la condición ocurre antes de que el tiempo especificado termine, Webdriver continua con el codigo.    

    Si la condición no ocurre en el tiempo predeterminado, un error “TimeOutException” ocurre.    

    Solo por dar un ejemplo imagina que necesitas esperar 10 segundos para que aparezca una alerta, si no aparece en 10 segundos se recibe un error y si la alerta aparece antes, el programa continuo.   

    Implícita    

    Hay una clase de selenium que contiene las condiciones que pueden validarse con una espera explicita.   

    Algunos metodos de la clase “Expected Condition”:   

    expected_condition     

    Expected Condicion            

    Descripcion            

    element_to_be_clickable()            

    Espera por un   elemento y revisa que sea visible y habilitado para darle clic.            

    element_to_be_selected()            

    Espera a que el   elemento se seleccione            

    presence_of_element_located()            

    Espera hasta que el   element esta disponible en el DOM            

    title_contains()            

    Espera que el   título de la página contenga una cadena de caracteres            

    visibility_of()            

    Localiza el   elemento y verifica que sea visible y el tamaño del elemento sea mayor cero            

    text_to_be_present_in_element()            

    Localiza el element   y verifica que contenga un texto.            

    WebdriverWait es la forma que Python implementa esperas explicita 

  • Page object Model10:04

    Page Object Model (POM) es un patrón de diseño. O en otras palabras es una estrategia probada para optimizar la creacion de tus pruebas, este modelo ofrece las siguientes ventajas.

    • Tu código será más fácil de entender     

    • Fácil de mantener por cualquier persona   

    • Código reusable - use el mismo script en varias pruebas   

        

    Como su nombre indica se crea una clase por cada página en tu prueba.   

        

    Imagina por ejemplo que todas tus pruebas tienen que meter su usuario y contraseña antes de llegar a la pantallas que realmente se quieren probar, en lugar de escribir  lo mismo en todas tus pruebas, puedes crear una clase con la pagina 'Login" unicamente.   

    Asi todas tus pruebas pueden usar esta clase.   

    Si alguien decide cambiar el ID del campo de usuario en la pagina de Login. Solo tendrias que cambiar el acceso en un solo lugar sin tocar todas tus pruebas! 

Requirements

  • Conocimientos muy básicos de programación: Los estudiantes deben tener una comprensión fundamental de conceptos de programación, preferiblemente en Python. Deberían estar cómodos con variables, bucles, condicionales y funciones.
  • Entorno de desarrollo: Vamos a ver como instalar Python, pero si tienes Python instalado en tu computadoras, junto con un editor de texto o un entorno de desarrollo integrado (IDE) con el que te sientas cómodo, como PyCharm, Visual Studio Code, o Jupyter Notebooks.
  • Aunque es explicado, Conocimientos básicos de HTML y CSS: Una comprensión básica de cómo las páginas web están estructuradas con HTML y cómo se estilizan con CSS será útil para entender cómo Selenium interactúa con los elementos web.
  • Conexión a Internet estable: Ya que el curso probablemente será en línea y se necesitará acceso a recursos y documentación en la web, así como para la práctica con sitios web reales.
  • Ganas de aprender y resolver problemas: La automatización y las pruebas pueden presentar desafíos únicos, por lo que una actitud proactiva y una disposición para resolver problemas serán cruciales.

Description

Este curso se concentra en como automatizar pruebas de paginas web usando Selenium. Cubre en forma extensa las diferentes formas de encontrar elementos usado el DOM y XPath. Xpath en un lenguaje muy pequeño para seleccionar nodos de un archivo XML. HTML es tratado como XML por XPath. 

Este curso describe las bases necesarias para  cuando elijas tu propia estrategia, pero sin hablar de las diferentes estrategias para probar, solamente muestra una estrategia popular que es Modelo de Objetos de Paginas, (Page Object Model - POM). 

De acuerdo a su página web, Selenium se puede definir en solo tres palabras “selenium automatiza navegadores” ¡eso es todo! Es usado para probar aplicaciones en internet. Especialmente la automatización de pruebas de aplicaciones en internet. Aunque también pudiera ser utilizado para automatizar tareas repetitivas y aburridas que usen internet.   

Selenium tiene dos partes, Selenium WebDriver y Selenium IDE.   

Si tienes proyectos grandes en los que tienes que hacer muchas pruebas de regresión. Con muchos casos de prueba y probablemente quieres probar en navegadores deiferentes, entonces necesitas usar selenum webdriver. Selenium webdriver tiene un lenguaje (Selenese) que puede ser usado para escribir pruebas desde otros lenguajes de programación populares como C#, Java , Python, Ruby, Perl, PHP y otros. Selenium puede correr en Windows, Linux y OS X y es open source.  

Los ejemplos de este curso fueron probados en Firefox, Chrome e Internet Explorer. Para probar se hace uso de Unittest, aunque existen otros frameworks pero no se cubren en este curso.

También veras las acciones más comunes y algunas no comunes en una pagina de internet, por ejemplo como darle clic a un botón o a una caja de selección, como verificar si un checkbox esta seleccionado, como seleccionar una opción en un drop down. Como obtener el texto o cualquier atributo de un elemento.   

Un poco mas alla de lo básico veras como cambiar el foco a alguna nueva ventana que se abra, o como cambarse a una alerta. Veras como realizar acciones en cadena ActionChains son utiles para crear acciones un poco mas complejas como seleccionar un menú dinamico que aparezca cuando el raton se mueve encima de un elemento.   

También aprenderás como manejar esperas Implicitas y Esperas Explicitas o en ingles (Implicit waits y Explicit waits)   

El curso termina explicando lo que se conoce como Page Object Model (POM) que es un patrón de diseño. O en otras palabras es una estrategia probada para optimizar la creacion de tus pruebas, este modelo ofrece que .   

  • Tu código será más fácil de entender     

  • Sea Fácil de mantener por cualquier persona   

  • Tu Código sea reusable – porque usa el mismo script en varias pruebas   

Porque eso entra de las estrategias que pudieras seguir para generar cientos de casos de prueba en forma eficiente.    

Al final de este curso te sentiras con confianza para generar tus programas para probar tus  casos de prueba en una forma elegante y bien estructurada.

Who this course is for:

  • Desarrolladores de software: Profesionales que buscan ampliar sus habilidades en pruebas automatizadas y desean aprender a implementar pruebas de automatización en sus flujos de trabajo de desarrollo.
  • Ingenieros de pruebas de calidad (QA): Especialistas en QA que desean mejorar sus habilidades técnicas y aprender cómo implementar y mantener pruebas automatizadas para mejorar la calidad del software.
  • Aficionados a la programación: Personas con un interés general en la programación que deseen aprender una nueva habilidad y entender cómo automatizar tareas repetitivas en navegadores web.
  • Analistas de datos y científicos de datos: Profesionales que necesitan recolectar datos de sitios web y desean aprender a automatizar la extracción de datos utilizando Selenium.
  • Profesionales de la automatización: Personas que ya trabajan en roles de automatización y desean diversificar o profundizar sus habilidades en automatización web específicamente con Selenium y Python.