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.
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
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
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()
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:
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()
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()
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.
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.
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()
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.
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.
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()
¡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()
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/
COMPARTIR ESTE ARTÍCULO
Correo: howdy@techaid.co
Teléfono: +1 (888) 280-0575
Copyright © 2020 TechAID Solutions, All rights reserved.
¡Prometemos que no lo bombardearemos con tantos correos electrónicos!
¡Prometemos que no lo bombardearemos con tantos correos electrónicos!