Automatizacion Selenium IDE + Python

Iniciado por ANTRAX, Marzo 27, 2012, 08:48:07 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Marzo 27, 2012, 08:48:07 AM Ultima modificación: Febrero 26, 2013, 02:19:02 PM por ANTRAX

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 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 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)
Python: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Librería de Selenium: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
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


    Código: python
    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


    Código: python
    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.

    Saludos!

    ANTRAX