Ir al contenido principal

Convertir Selenium IDE a WebDriver con Visual Studio

Llevo bastantes meses asegurando la fiabilidad de un proyecto en continuo cambio en el que trabajo con Selenium IDE. Hasta el momento las alrededor de 109.000 líneas de código HTML han funcionado rezonablemente bien a pesar de los problemas que da su mantenimiento, permitiéndonos detectar los errores producidos por los cambios en el software de los programadores en el día a día.



Actualmente me estoy planteando pasarme a Selenium WebDriver. Estas son mis razones para el cambio:

A favor:

- Ejecutar las pruebas sobre los principales navegadores, no sólo Firefox.

- Tener todo el código en C#, pudiendo utilizar todos sus métodos y así no tener que usar los de javascript, como por ejemplo para el cálculo de fechas.

- Dejar de usar plugins de terceros como el que me permite tener instrucciones para el control de flujo.

- Olvidarme de las continuas actualizaciones de Firefox y de su compatibilidad con los distintos plugins de terceros que uso.

- Lanzar todos los tests usando las conocidas herramientas de Visual Studio o de NUnit.

- Lanzar las pruebas en paralelo con Selenium Grid. (por probar).

- Depuración más cómoda de las variables que con las extensiones de Firefox.

- Generación de informes. (por probar).

- Integración continua : lanzamiento programado nocturno.

- Reutilización de código. Donde antes había varios ficheros duplicados ahora hay una llamada al mismo método.


En contra:

- Todo el mundo conoce la máxima "Si funciona no lo toques", sobretodo en informática.

- Algunas instrucciones de Selenium IDE no existen en C#, hay que investigar la nueva manera de hacer lo mismo.

- Tiempo/Coste € de la conversión. Hay que preparar Visual Studio y luego ir fichero a fichero, en mi caso alrededor de 1000.

- Aparentemente es más cómodo las ampliaciones y el mantenimiento desde el IDE  (por probar).


Se mantiene:

- La depuración es intuitiva en ambos casos.






Cómo lo he hecho:

-Crear un proyecto librería en Visual Studio.

-Instalo Webdriver en Vs. VS -> Project -> Manage Nuget Packages-> “WebDriver” e instalar “Selenium Webdriver”. Esto coloca las librería necesarias en el proyecto.

-Descargar los drivers de cada uno de los navegadores a utilizar, por ejemplo googleando “webdriver chrome”. Para el de Safari te tienes que registrar en la página de Apple.

- Desde el plug in de Firefox -> “Export test case as” C# (Webdriver)

- Esto te crea un fichero .cs ejecutable en NUnit. Para poder lanzar los test de NUnit como si fueran tests de MsTest aquí puedes encontrar los pasos detallados en inglés:

a) “Unload Project”

b) Edita el fichero csproj

c) Añade este tag en el primer y guarda.
{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}

d) Instala NUnitforVS de aquí

d) Recarga el proyecto.

e) Menu Test -> Windows->Test View



- Ya tienes los test en formato NUnit pero con las comodidades de VS, como por ejemplo depurar.


-Introduce el código generado por la exportación en el proyecto de Test. Adjunto el código de utilización de cada driver:

A PARTIR DE AQUÍ YA ESTÁ BASTANTE "DEPRECATED"!!

Librerías
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Chrome;
using System.Threading;

                Internet Explorer:
        private IWebDriver driver;
        private string baseURL;
 
        // Ubicación de los driver
        private const string DRIVERS_PATH = @"C:\{PATH}\Solucion\packages\Selenium.WebDriver.2.24.0\lib\net40\";
 
 
        [SetUp]
        public void SetupTest()
        {
            baseURL = "http://localhost:3517/"; 
 
            var options = new InternetExplorerOptions()
            {
                InitialBrowserUrl = baseURL,
                IntroduceInstabilityByIgnoringProtectedModeSettings = true
            };                      
 
            driver = new InternetExplorerDriver(DRIVERS_PATH, options);          
 
        }

                Chrome:
        private IWebDriver driver;
        private string baseURL;
 
        // Ubicación de los drivers
        private const string DRIVERS_PATH = @"C:\{PATH}\Solucion\packages\Selenium.WebDriver.2.24.0\lib\net40\";
 
 
        [SetUp]
        public void SetupTest()
        {
            baseURL = "http://localhost:3517/";                     
 
            driver = new ChromeDriver(DRIVERS_PATH);

        }

             Firefox:
        private IWebDriver driver;
        private string baseURL;
 
        // Ubicación de los drivers
        private const string DRIVERS_PATH = @"C:\{PATH}\Solucion\packages\Selenium.WebDriver.2.24.0\lib\net40\";
 
 
        [SetUp]
        public void SetupTest()
        {
            driver = new FirefoxDriver();
            baseURL = "http://localhost:3517/"; 
        }




Comentarios

  1. voy a encarar el mismo cambio, me sirve mucho esta información, gracias...

    ResponderEliminar
  2. Gracias por comentarlo Kilme, aníman este tipo de mensajes. Fuerza y al toro!

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Trucos Badoo de un perro viejo

Dentro de poco haré 3 años en Badoo. Tuve una primer época en el que me lo tomé muy en serio, estuve muy metido y tuve los mejores resultados. De aquellas experiencias acabé escribiendo ésta, la página de más éxito de este blog. Pero ya llevo una muy larga temporada en el que entro de forma bastante intermitente. 

¿Está este artículo escrito por alguien harto de badoo? ¿Estoy quemado como la mayoría? Yo diría que no, pero...

IV Parte : Trucos para Badoo

No se ve el icono de Word : Solución

De golpe los ficheros de word no pintan el icono correspondiente en Windows, por alguna razón el icono no se ve aunque la aplicación sí se abre bien. 
Los hay muy brutos que deciden reinstalar todo el Office...