POR Mike Arias 05/14/2020 2

Selenium: Una guía rápida y simple

Con tantos tutoriales larguísimos sobre la construcción de frameworks de Selenium utilizando el modelo de objetos de página y otras palabras elegantes que definitivamente ya debes conocer. Pensé que podría ser útil tener un tutorial a la mano que sea solo una guía rápida y simple de Selenium.


Al entrar en este tutorial, ten en cuenta que no recomiendo usar Selenium de esta manera. Básicamente, es solo una forma de presentar a Selenium a nuevas personas. Si tu quieres aprender cómo hacer un framework apropiado de Selenium, te invito a consultar
este otro tutorial.

 

¿Qué necesitarás?

 

En primer lugar, debes elegir un lenguaje de programación. Selenium tiene enlaces para casi todos los idiomas principales, pero para este tutorial, usaremos Python. ¿Por qué? Porque Python es genial.

También necesitarás

  • Un IDE o un Editor de Texto dependiendo del lenguaje que escojas.
  • Un Webdriver ejecutable, para este tutorial será chrome driver. (En Windows, Selenium’s el path predeterminado es C:\Windows, para Mac, puedes instalarlo con cask usando este comando: brew cask install chrome driver)
  • Un unidad en marco de prueba que en este caso será pytest.

 

Lo básico


Desglosamos Selenium en su definición más básica. Selenium se puede utilizar para simular acciones del usuario en un navegador. Llevando eso al género de prueba, el uso más básico de Selenium que podemos hacer es crear una prueba simple que abra un navegador, busque algún tipo de elemento, interactúe con él y valide su interacción.

Con base a esto, lo que hará nuestra prueba muy simple es que irá a Google, buscará un Tutorial de Selenium adecuado y hará clic en él. ¿Suena bien? Empecemos

 

 

La estructura

 

 

Lo primero que necesitamos es muy simple. Una clase para escribir nuestros casos de prueba. Para eso, crearémos un simple archivo  test_cases.py con la clase QuickAndDirtySeleniumExample También necesitamos importar el paquete de unit test 

 

 

import unittest

class QuickAndDirtySeleniumExample(unittest.TestCase):

 

Luego, necesitamos empezar a escribir nuestro caso de pruebas. Dado que no estamos usando ningún patrón o práctica específica, no pasaremos tiempo aquí diseñando nuestra solución. Recuerda, esta es solo una introducción rápida y práctica.

Nuestro caso de pruebas debe ser llamado: test_search_proper_tutorial. No olvides  agregar las últimas 2 líneas que tiene el código en este ejemplo. Así es como le decimos a Python que esta clase es nuestra clase de prueba principal en la que ejecutaremos nuestros casos de prueba.

 

import unittest

class QuickAndDirtySeleniumExample(unittest.TestCase):

    def test_search_proper_tutorial(self):
        # This is our test case

if __name__ == '__main__':
    unittest.main()


Las pruebas


Entonces … Tenemos nuestro “proyecto”, tenemos nuestra clase, todo lo que queda por hacer es seguir adelante y escribir nuestro caso de prueba. Para esto primero, debemos organizar en nuestra mente cuáles son los pasos que necesitaremos para llegar a nuestra meta. En este caso, los pasos son:

 

  1. Iniciar el navegador
  2. Ir a Google.com
  3. Localizar el cuadro de texto Buscar
  4. Escribir el nombre de un tutorial de Selenium 
  5. Hacer la búsqueda
  6. Buscar nuestro tutorial de Selenium
  7. Hacer clic en el
  8. Validar que efectivamente estés en el lugar correcto

1. Iniciar el navegador


Para iniciar el navegador, necesitamos crear una nueva instancia de nuestro Webdriver. El controlador web representa el navegador y es el que nos permite interactuar con él. para
realizar la instancia, necesitamos importarlo con la siguiente línea en la parte superior de nuestro archivo  test_cases.py 

 

from selenium import webdriver

Con esto en su lugar, podemos crear una nueva instancia de nuestro web driver usando Chrome. Nuestro test_cases.py file deberá lucir así:

import unittest
from selenium import webdriver


class QuickAndDirtySeleniumExample(unittest.TestCase):

    def test_search_proper_tutorial(self):
        driver = webdriver.Chrome()


if __name__ == '__main__':
    unittest.main()

 

2. ir a Google.com

 


Para esto lo que debemos hacer es decirle a nuestro driver que navegue en
https://www.google.com/. Esto se hace usando el método get()

Después de agregarlo, nuestro archivo test_cases.py debería verse así:

 

import unittest
from selenium import webdriver


class QuickAndDirtySeleniumExample(unittest.TestCase):

    def test_search_proper_tutorial(self):
        driver = webdriver.Chrome()
        driver.get("https://www.google.com/")


if __name__ == '__main__':
    unittest.main()


3. Localizar el cuadro de texto “Buscar”


Ahora que estamos en Google, entonces necesitamos ubicar el cuadro de texto Buscar para que luego podamos interactuar con él. Para esto, el controlador web viene con una serie de métodos find_element . Podría decirse que esta es una de las partes más poderosas e importantes de Selenium en su conjunto, por lo que te recomiendo que juegues un poco con ella.

 

selenium-search-box


En este caso estaremos usando el método  find_element_by_name, dado que el cuadro de texto de Búsqueda de Google ya tiene esta propiedad establecida y parece ser única.

 

Google-search-box-selenium

 

Ten en cuenta que este no siempre será el caso. Habrá sitios con elementos que no parecen tener una forma clara de identificarlos. Para esos, revisa este otro tutorial. 

 

En este punto, nuestro test_file.py se vería así:

 

import unittest
from selenium import webdriver


class QuickAndDirtySeleniumExample(unittest.TestCase):

    def test_search_proper_tutorial(self):
        driver = webdriver.Chrome()
        driver.get("https://www.google.com/")
        searchbox = driver.find_element_by_name("q")


if __name__ == '__main__':
    unittest.main()

 

4. Escribir en el cuadro de búsqueda


Para escribir en un cuadro de texto (o prácticamente cualquier elemento que acepte texto como entrada), utilizamos la función send_keys(). Algo muy interesante acerca de esta función es que cuando se usa junto con la biblioteca de claves de Selenium (selenium.webdriver.common.Keys), tu puedes usar send_keys() para enviar cosas como Enter, Backspace, cualquier combinación extraña que desees hacer con las teclas de flecha, etc. En este caso, buscaremos “selenium automation framework qaboy” y luego presionamos Enter.

 

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys


class QuickAndDirtySeleniumExample(unittest.TestCase):

    def test_search_proper_tutorial(self):
        driver = webdriver.Chrome()
        driver.get("https://www.google.com/")
        searchbox = driver.find_element_by_name("q")
        searchbox.send_keys("selenium automation framework qaboy")
        searchbox.send_keys(Keys.ENTER)


if __name__ == '__main__':
    unittest.main()


En este punto, hemos buscado nuestro tutorial adecuado y solo necesitamos identificar cuál de los resultados de Google es el que esperamos.

 

5. Busca nuestro tutorial

 

En este paso, tendremos que analizar un poco que és XPath. En este punto, hemos buscado nuestro tutorial adecuado y solo necesitamos identificar cuál de los resultados de Google es el que esperamos. XPath nos da la posibilidad de realizar una consulta para buscar cualquier etiqueta o propiedad dentro del sitio y puede permitirnos buscar utilizando un cierto nivel de lógica. Xpath es muy poderoso, pero también tiende a ser frágil y a demorar más tiempo en ejecutarse. Aquí hablo un poco más al respecto. 

Aquí utilizaremos nuestro enlace real para buscar el elemento, esta información se almacena bajo la propiedad href.

 

Software-Testing- Selenium

 

Y una vez que encontremos nuestro elemento deseado, podemos seguir adelante y hacer clic en él. Nuestro código ahora debería verse así:

 

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys


class QuickAndDirtySeleniumExample(unittest.TestCase):

    def test_search_proper_tutorial(self):
        driver = webdriver.Chrome()
        driver.get("https://www.google.com/")
        searchbox = driver.find_element_by_name("q")
        searchbox.send_keys("selenium automation framework qaboy")
        searchbox.send_keys(Keys.ENTER)
        link = driver.find_element_by_xpath(
            "//a[@href='https://qaboy.com/2018/01/15/automated-framework-using-selenium-with-python/']")
        link.click()


if __name__ == '__main__':
    unittest.main()

 

6. Validamos nuestro resultado

 


¡Ahora solo tenemos que validar que obtuvimos el resultado deseado! Esto es tan simple como verificar que podemos encontrar un elemento que esperamos ver en este sitio. En este caso, buscaremos el título del artículo que tiene una clase llamada “entry-title” también podemos indentificarlo. Pero lo haremos un poco diferente.

Como en este caso, estamos validando específicamente que podemos encontrar este elemento, lo haremos con una afirmación. En las pruebas, una afirmación es básicamente la confirmación de una condición y, por lo general, se estructuran de la siguiente manera:

 

assert {condition}, {Failure message}


Tomando esto a nuestro código, obtendremos algo como esto:

 

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys


class QuickAndDirtySeleniumExample(unittest.TestCase):

    def test_search_proper_tutorial(self):
        driver = webdriver.Chrome()
        driver.get("https://www.google.com/")
        searchbox = driver.find_element_by_name("q")
        searchbox.send_keys("selenium automation framework qaboy")
        searchbox.send_keys(Keys.ENTER)
        link = driver.find_element_by_xpath(
            "//a[@href='https://qaboy.com/2018/01/15/automated-framework-using-selenium-with-python/']")
        link.click()
        assert driver.find_element_by_class_name("entry-title"), "Element was not found."


if __name__ == '__main__':
    unittest.main()

¡Y con esto estámos listos!

Ahora solo necesitas ejecutar la prueba con el siguiente comando:

 

python -m pytest test_cases.py

 

Eso es todo.

 

Autor: Mike Arias
Senior Software Testing Engineer  TechAID.
Twitter: @theqaboy
Blog: qaboy.com/


VOLVER

COMPARTIR ESTE ARTÍCULO

[addtoany]

Leave a Reply

Your email address will not be published. Required fields are marked *

OTRAS PUBLICACIONES QUE TE PUEDEN GUSTAR

El Verdadero Costo de Contratar Personal para el Equipo de QA

POR Maria Tejeda
05/18/2021 0

API- Herramientas de prueba: Una guía basada en ejemplos

POR Manuel Marinez
04/08/2021 1