Automatizacion Selenium IDE + Python

9:30 0 Comments A+ a-


Introducción
 
Selenium IDE es un complemento de Firefox utilizado para automatizar y hacer pruebas sobre aplicaciones web.
Para ello, realiza una grabación de determinadas acciones que luego las convierte en un script editable. Lo más cómodo, es que luego este script se puede ejecutar tantas veces como se quiera.
La función principal de este plugin es poder hacer testing funcional de las aplicaciones. Permite rellenar formularios, navegar por webs, etc.
Esta herramienta permite ahorrar mucho tiempo y esfuerzo. Para ello permite automatizar pruebas que puede ser una prueba en particular o conjunto de pruebas.

Instalación
Solo basta con ir a http://seleniumhq.org/download/ y descargar Selenium IDE.


Nos aparecerá el cartel para instalar el complemento y solo damos en permitir


Y comenzara a descargarlo…


Una vez descargado, lo instalamos


Una vez instalado, nos pedirá que reiniciemos el browser

 

Y con esto ya quedara instalado. Podremos encontrar Selenium en el menú de Herramientas del navegador

  


A demás de esto, necesitaremos instalar python y la librería de selenium para python (en mi caso)
Librería de Selenium: http://pypi.python.org/pypi/selenium
Una vez instalado python, copiamos las librerías de Selenium dentro de la carpeta de las librerías (C:\Python27\Lib).

 
Primeros pasos con Selenium

Abrimos el navegador, yo usare firefox. Iniciamos Selenium IDE


Apenas lo abrimos, comenzamos a navegar normalmente y Selenium grabara todos los pasos que hagamos.
Mis pasos son los siguientes:
[+] Google
[+] ANTRAX-LABS
[+] Boton Buscar
[+] Click en el link de mi blog


Como se puede ver, Ya estoy en mi blog y Selenium grabo todos mis pasos


Ahora lo que hare, sera comprobar un enlace de mi blog, para ello, con el botón secundario del mouse, dare click en un enlace de mi blog y seleccionare “verifyElementPresent…”


Como se puede ver en la imagen, han quedado grabados todos los pasos que hice.


Ahora se puede exportar el script de automatización a cualquiera de los lenguajes que se ven en la imagen. Yo trabajare con Python.


Guardamos el script con su extensión correspondiente

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re

class TestAntraxLabs(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "http://www.google.com.ar/"
        self.verificationErrors = []
    
    def test_antrax_labs(self):
        driver = self.driver
        driver.get("/")
        driver.find_element_by_id("lst-ib").click()
        driver.find_element_by_id("lst-ib").clear()
        driver.find_element_by_id("lst-ib").send_keys("antrax-labs")
        driver.find_element_by_name("btnG").click()
        driver.find_element_by_link_text("[A]NTRAX [L]ABS").click()
        try: self.assertTrue(self.is_element_present(By.LINK_TEXT, "Seguridad Wireless"))
        except AssertionError as e: self.verificationErrors.append(str(e))
    
    def is_element_present(self, how, what):
        try: self.driver.find_element(by=how, value=what)
        except NoSuchElementException, e: return False
        return True
    
    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()
Y como resultado tendremos el script, que puede ser editable para añadir o modificar funciones

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re

class TestAntraxLabs(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "http://www.google.com.ar/"
        self.verificationErrors = []
    
    def test_antrax_labs(self):
        driver = self.driver
        driver.get(self.base_url)
        driver.find_element_by_id("lst-ib").click()
        driver.find_element_by_id("lst-ib").clear()
        driver.find_element_by_id("lst-ib").send_keys("antrax-labs")
        driver.find_element_by_name("btnG").click()
        driver.find_element_by_link_text("[A]NTRAX [L]ABS").click()
        try: self.assertTrue(self.is_element_present(By.LINK_TEXT, "Seguridad Wireless"))
        except AssertionError as e: self.verificationErrors.append(str(e))
    
    def is_element_present(self, how, what):
        try: self.driver.find_element(by=how, value=what)
        except NoSuchElementException, e: return False
        return True
    
    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()
Lo que hice acá, fue un ligero cambio. Reemplace la barra por la variable que contiene la url inicial, en mi caso la de google.


Si corremos el Script, se nos abrirá el navegador y automáticamente comenzara a navegar y a seguir los pasos que dejamos grabados.


Al finalizar, lanza un mensaje diciendo si paso o no la prueba. En mi caso busco y abrió mi blog correctamente y pudo verificar el enlace, en por eso que me dio el OK.
En caso de no pasar, tirara un mensaje de error.
Lo bueno de Selenium es que se puede trabajar en varios lenguajes y que sus scripts exportados son editables.